0
<Style x:Key="WaterMarkTextBoxStyle" BasedOn="{StaticResource {x:Type TextBox}}" TargetType="{x:Type TextBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<Grid>
<ScrollViewer x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
<TextBlock x:Name="textBlock" Opacity="0.345" Text="Enter Text Here" TextWrapping="Wrap" Visibility="Hidden" />
</Grid>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsFocused" Value="False" />
<Condition Property="Text" Value="" />
</MultiTrigger.Conditions>
<Setter Property="Visibility" TargetName="textBlock" Value="Visible" />
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
이 WPF에서 워터 마크 텍스트 상자로 아주 잘 작동하는 것 같다,하지만 어떻게 내가 무엇을 워터 마크 텍스트 것 변경할 수 있습니다 있다?
위 코드는 Text = '여기에 텍스트 입력'으로 하드 코딩되어 있습니다.
나는 위의이 같은 사용하는 경우
,<TextBox Style="{StaticResource WaterMarkTextBoxStyle}"></TextBox>
사실은 워터 마크 텍스트가 무엇인지 설정할 수 없습니다.
아이디어가 있으십니까?
<TextBox Style="{StaticResource WaterMarkTextBoxStyle}" Watermark.Text="Search" />
스타일 다음 DP에 결합해야합니다 :
당신이 뭔가를 할 것입니다 귀하의 제어를 위해 그리고public static class Watermark
{
public static readonly DependencyProperty TextProperty =
DependencyProperty.RegisterAttached("Text",
typeof(Boolean),
typeof(Watermark),
new FrameworkPropertyMetadata());
public static void SetText(UIElement element, Boolean value)
{
element.SetValue(TextProperty, value);
}
public static Boolean GetText(UIElement element)
{
return (Boolean)element.GetValue(TextProperty);
}
}
: