WPF MVVM数据触发器不工作
我刚刚开始使用数据触发器,所以如果它很简单,我很抱歉,但我无法让我的数据触发器工作。可能是因为我还有一个命令绑定吗WPF MVVM数据触发器不工作,wpf,mvvm,datatrigger,Wpf,Mvvm,Datatrigger,我刚刚开始使用数据触发器,所以如果它很简单,我很抱歉,但我无法让我的数据触发器工作。可能是因为我还有一个命令绑定吗 <Button x:Name="logOnButton" HorizontalAlignment="Left" Margin="369,70,0,0" VerticalAlignment="Top" Width="75" IsEnabled="True" Command="{Binding LogonButtonClick}"> <Button.
<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
是否触发?如果是这样,我会按照克莱门斯的建议,在LoggedOn
属性设置器中触发事件。当然,第二个DataTrigger是多余的,因为它只设置样式设置器已经设置的值。此外,Property=“Control.Background”
应该是Property=“Background”
。