通用Windows应用程序不支持数据触发器.
如果没有数据触发器,只有在视图模型中的布尔属性发生更改时,如何使用xaml和数据绑定更改按钮的背景颜色?
例如,给定这个XAML:
<StackPanel>
<Button Name="ButtonA" Click="ButtonA_Click" Content="A" />
<Button Name="ButtonB" Click="ButtonB_Click" Content="B" />
<Button Name="ButtonC" Click="ButtonC_Click" Content="C" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
这个代码背后
private void ButtonA_Click(object sender, RoutedEventArgs e)
{
Model.IsOnA = !Model.IsOnA;
}
private void ButtonB_Click(object sender, RoutedEventArgs e)
{
Model.IsOnB = !Model.IsOnB;
}
private void ButtonC_Click(object sender, RoutedEventArgs e)
{
Model.IsOnC = !Model.IsOnC;
}
Run Code Online (Sandbox Code Playgroud)
当视图模型中的相应属性发生更改时,使用数据绑定更改按钮背景颜色的最佳方法是什么?
我只能使用VisualStateManager管理器使其适用于一个按钮:
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState>
<VisualState.StateTriggers>
<StateTrigger IsActive="{x:Bind Model.IsOnA, Mode=OneWay}" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="ButtonA.Background" Value="Red"></Setter>
<Setter Target="ButtonA.Foreground" Value="White"></Setter>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
Run Code Online (Sandbox Code Playgroud)
但是有多个按钮绑定到视图模型中的不同属性,这种方法不起作用.