TextBox触发器使用样式清除Text

时间:2011-09-14 19:33:53

标签: wpf text triggers textbox

首先,我要说我已经和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}"/>

谢谢!

1 个答案:

答案 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