【发布时间】:2018-06-19 13:34:07
【问题描述】:
我刚刚开始使用数据触发器,所以如果它很简单,我很抱歉,但我无法让我的数据触发器工作。难道是因为我也有命令绑定?
<Button x:Name="logOnButton" HorizontalAlignment="Left" Margin="369,70,0,0" VerticalAlignment="Top" Width="75" IsEnabled="True" Command="{Binding LogonButtonClick}">
<Button.Style>
<Style TargetType="Button">
<Setter Property="Background" Value="Red"/>
<Setter Property="Content" Value="Log On"/>
<Style.Triggers>
<DataTrigger Binding="{Binding LoggedOn}" Value="True">
<Setter Property="Control.Background" Value="Green"/>
<Setter Property="Content" Value="Log Off"/>
</DataTrigger>
<DataTrigger Binding="{Binding LoggedOn}" Value="False">
<Setter Property="Control.Background" Value="Red"/>
<Setter Property="Content" Value="Log On"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
【问题讨论】:
-
您的
LoggedOn属性是否使用INotifyPropertyChanged? -
是的,但我没有明确调用它,因为我的理解是这是自动的
-
LoggedOn 属性设置器必须在属性值更改时触发 PropertyChanged 事件(在设置支持字段之后)。
-
我看到你的默认控件属性和
LoggedOn = False一样,第二个DataTrigger触发了吗?如果是这样,我会遵循 Clemens 的建议并在LoggedOn属性设置器中触发事件。 -
当然,第二个 DataTrigger 是多余的,因为它只是设置样式设置器已经设置的值。此外,
Property="Control.Background"应该只是Property="Background"。
标签: wpf mvvm datatrigger