1. 问题描述
xaml 代码块如下:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <Button Content="333"> <Button.Style> <Style TargetType="Button"> <Setter Property="Width" Value="70"/> <Setter Property="Height" Value="27"/> <Style.Triggers> <DataTrigger Binding="{Binding ElementName=listBox, Path=SelectedIndex}" Value="2"> <Setter Property="Content" Value="three" /> </DataTrigger> </Style.Triggers> </Style> </Button.Style> </Button>
|
运行后,触发 DataTrigger 发现 Button 的 Content 没有变化
2. 原因和解决方法
原因:定义 Button 的时候直接指定 Content 相当于定死了 Button 的 Content ,所以在 Style 的 Trigger 中就无法修改了;
注意: 这个时候如果指定有默认的 Button Style,默认样式也会失效;原因是重写了 Style;
解决方案:将 Content 的默认值,写进 Button.Style,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <Button> <Button.Style> <Style TargetType="Button"> <Setter Property="Content" Value="333"/> <Setter Property="Width" Value="70"/> <Setter Property="Height" Value="27"/> <Style.Triggers> <DataTrigger Binding="{Binding ElementName=listBox, Path=SelectedIndex}" Value="2"> <Setter Property="Content" Value="three" /> </DataTrigger> </Style.Triggers> </Style> </Button.Style> </Button>
|