Можно ли изменить стиль текстового поля для использования определенного источника данных? - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть TextBox, который использует стиль, общий для всех TextBox, поэтому у меня может быть один и тот же аспект для всех них.

Однако в конкретном TextBox мне нужно визуально изменить его в соответствии с условием, поэтому я пытаюсь сделать это:

<TextBox 
    Text="{Binding MyBinding, Mode=OneWay}"
    Style="{StaticResource TextBoxStyle1}">
    <TextBox.Style>
        <Style TargetType="StackPanel">
            <Setter Property="Visibility" Value="Visible"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=thisView, Path=DataContext.MyPropertyInViewModel}" Value="3">
                    <Setter Property="Visibility" Value="Collapsed"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>

Проблема в том, что я не могу установить стиль дважды, поэтому я не знаю, как определить триггер данных, чтобы скрыть textBox.

Как я мог это сделать?

Спасибо.

1 Ответ

0 голосов
/ 05 ноября 2018

Удалить стиль = "{StaticResource TextBoxStyle1}" и добавьте тег BasedOn в новый стиль BasedOn = "{StaticResource TextBoxStyle1}"

<TextBox 
    Text="{Binding MyBinding, Mode=OneWay}">
    <TextBox.Style>
        <Style TargetType="StackPanel" BasedOn="{StaticResource TextBoxStyle1}">
            <Setter Property="Visibility" Value="Visible"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=thisView, Path=DataContext.MyPropertyInViewModel}" Value="3">
                    <Setter Property="Visibility" Value="Collapsed"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>

Это позволит вам повторно использовать существующий стиль. Однако, если существующий стиль уже определяет DataTrigger, который вам не нужен, вам нужно будет создать новый стиль для этого текстового поля.

...