Триггер TextBox для очистки текста с использованием стиля - PullRequest
1 голос
/ 14 сентября 2011

Во-первых, позвольте мне сказать, что я работаю с WPF около недели.Я хочу стилизовать TextBox, чтобы при его отключении он очищался. В этой статье объясняется, как это сделать, однако я не совсем понимаю, как установить универсальный стиль в качестве ресурса, чтобы каждый 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 Ответ

2 голосов
/ 15 сентября 2011

Вы не сможете использовать свойство Text таким образом. Явная установка свойства Text для любого TextBox, имеющего этот стиль, переопределит установщик Text в триггере (как вы заметили).

Если вам нужно очистить только TextBox, а не свойство, к которому он привязан, то в качестве обходного пути можно использовать присоединенное свойство (или Tag) для текста, к которому вы привязываете 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 как

<TextBox Style="{StaticResource style1}" Tag="{Binding SomeProperty}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...