首先,我要说我已经和WPF合作了大约一个星期。我想为TextBox设置样式,以便在禁用时将其清除。 This文章解释了如何做到这一点,但是我对如何将通用样式设置为资源感到困惑,这样每个TextBox都可以绑定到不同的属性而不必重复每个TextBox的样式。
<Window.Resources>
<Style TargetType="{x:Type TextBox}" x:Key="style1">
<Setter Property="Text" Value="{What do I really put here?}" />
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Text" Value="{x:Null}" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
...
<TextBox Style="{StaticResource style1}" Text="{Binding SomeProperty}"/>
谢谢!
答案 0 :(得分:2)
您将无法使用Text
这样的属性。在具有该样式的任何Text
上显式设置TextBox
属性将覆盖触发器中的Text
setter(就像您注意到的那样)。
如果您只需要清除TextBox
而不是它所绑定的属性,那么解决方法是使用附加属性(或Tag
)来绑定文本{{ 1}}到Text
实施例..
Style
然后<Style TargetType="{x:Type TextBox}" x:Key="style1">
<Setter Property="Text" Value="{Binding RelativeSource={RelativeSource Self},
Path=Tag}"/>
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Text" Value="{x:Null}" />
</Trigger>
</Style.Triggers>
</Style>
可以使用此TextBox
Style