开发者

TextBox trigger to clear Text using a style

First, let me say I've been working with WPF for about a week. I want to style a TextBox so that when it is disable, it is cleared. This article explained how to do it开发者_高级运维, however I'm confused on how to set the generic style as a resource so that every TextBox can bind to a different property without repeating the style for each 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}"/>

Thanks!


You won't be able to use the Text property like that. Setting the Text property explicitly on any TextBox that has that style will override the Text setter in the trigger (like you noticed).

If you only need the TextBox to be cleared and not the property it is binding to, then a workaround is to use an attached property (or Tag) for the text which you bind Text to in the Style.
Example..

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

Then a TextBox can use this Style like

<TextBox Style="{StaticResource style1}" Tag="{Binding SomeProperty}" />
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜