#c# #wpf #xaml #datatrigger
#c# #wpf #xaml #datatrigger
Вопрос:
Я пытаюсь изменить стиль другого текстового блока при изменении определенного текстового блока. Я пытаюсь использовать datatrigger. Это правильный путь? и вот мой код.
</TextBlock>
<TextBlock Name="txtChangeTo" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="48" Text="2">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=txtChange, Path=Text, UpdateSourceTrigger=PropertyChanged}" Value="">
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="Foreground" Value="red"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<Button x:Name="btnChangeValue" Content="Change Value" Click="btnChangeValue_Click"></Button>
</StackPanel>
Спасибо.
Комментарии:
1. Привет, мне это кажется хорошим, за исключением текстового поля, к которому вы привязываетесь, отсутствует. Итак, первая строка должна быть чем-то вроде
<TextBox x:Name="txtChange"/>
. Также в вашем примере стиль применяется, когда текст текстового блока пуст, поэтому вы его не увидите.
Ответ №1:
Ваш код работает, но я бы посоветовал вам использовать MVVM, чтобы стиль определялся ViewModel, а не View, как это происходит сейчас. Первый текстовый блок должен изменять свойство в ViewModel, а второй должен определять его состояние на основе состояния ViewModel. Ссылки на другие элементы управления в том виде, в каком вы это делаете, делают код действительно хрупким.