相关疑难解决方法(0)

在通用Windows应用程序中,如果视图模型中的属性更改,如何使用xaml更改按钮的背景颜色和数据绑定

通用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)

但是有多个按钮绑定到视图模型中的不同属性,这种方法不起作用.

c# xaml uwp windows-10-universal

4
推荐指数
1
解决办法
7535
查看次数

标签 统计

c# ×1

uwp ×1

windows-10-universal ×1

xaml ×1