有时我们根据状态,需要动态调整Button.Content
的值,我们可能会这么设置:
<Style x:Key="enableButtonStyle2" TargetType="{x:Type Button}"> <Style.Triggers> <DataTrigger Binding="{Binding ElementName=processList, Path=SelectedItem}" Value="{x:Null}"> <Setter Property="IsEnabled" Value="False" /> </DataTrigger> <DataTrigger Binding="{Binding ElementName=processList, Path=SelectedItem.Status}" Value="0"> <Setter Property="Content" Value="禁用" /> </DataTrigger> <DataTrigger Binding="{Binding ElementName=processList, Path=SelectedItem.Status}" Value="1"> <Setter Property="Content" Value="启用" /> </DataTrigger> </Style.Triggers> </Style>
我们发现,无法成功,从msdn找到一个答案,地址为https://social.msdn.microsoft.com/Forums/security/zh-CN/ecdd95c9-7c58-4cf2-b53a-beeb65c31c62/1998133021299923530221457221203577432622content236462461565311?forum=wpfzhchs
我们可以通过设置内容模板来设置:
<Style x:Key="enableButtonStyle" TargetType="{x:Type Button}"> <Style.Triggers> <DataTrigger Binding="{Binding ElementName=processList, Path=SelectedItem}" Value="{x:Null}"> <Setter Property="IsEnabled" Value="False" /> </DataTrigger> <DataTrigger Binding="{Binding ElementName=processList, Path=SelectedItem.Status}" Value="0"> <Setter Property="ContentTemplate"> <Setter.Value> <DataTemplate DataType="Button"> <ContentPresenter Content="禁用" /> </DataTemplate> </Setter.Value> </Setter> </DataTrigger> <DataTrigger Binding="{Binding ElementName=processList, Path=SelectedItem.Status}" Value="1"> <Setter Property="ContentTemplate"> <Setter.Value> <DataTemplate DataType="Button"> <ContentPresenter Content="启用" /> </DataTemplate> </Setter.Value> </Setter> </DataTrigger> </Style.Triggers> </Style>