问题描述
当某些文本块更改时,我试图更改另一个文本块的样式。我正在尝试使用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>
谢谢。
解决方法
您的代码可以工作,但是我建议您使用MVVM,以便样式由ViewModel决定,而不是像现在一样由View决定。第一个TextBlock应该更改ViewModel中的属性,第二个应该基于ViewModel状态确定其状态。以您的方式引用其他控件会使代码真正易碎。