如何根据 ViewModel 中的值将条件效果应用于按钮?

How can I apply a conditional effect to a button based on value in the ViewModel?

我可以使用类似这样的方法轻松地为按钮添加一点发光效果:

<Button ...>
  <Button.Effect>
    <DropShadowEffect ... />
  </Button.Effect>
</Button>

如何根据 ViewModel 中的值有条件地应用效果?

基本上,如果最近几天添加了新文档,我希望按钮 "glow"。我可以提供 bool 值,指示是否需要发光作为 ViewModel 的 属性。

我正在考虑只创建两个附加到同一个命令的按钮,根据 ViewModel 隐藏一个并显示另一个。那会起作用,但似乎有点蛮力。

想法?

谢谢。

J

我认为你真的需要一个 DataTrigger 像下面一样,

<Style.Triggers>
    <DataTrigger Binding="{Binding PropertyFromViewModel}" Value="True">
      <Setter .../>
      <Setter .../>
   </DataTrigger>
</Style.Triggers>

例子

    <Button Content="Hello" Command={Binding YourCommand}>
        <Button.Style>
            <Style TargetType="{x:Type Button}">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Glow}" Value="True">
                        <Setter Property="Effect">
                            <Setter.Value>
                                <DropShadowEffect Color="Blue"/>
                            </Setter.Value>
                        </Setter>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Button.Style>
    </Button>

您需要使用 DataTrigger 为您的按钮创建样式,如下所示:

<Button Content="Hello" Command="{Binding HelloCommand}">
    <Button.Style>
        <Style TargetType="Button">
            <Style.Triggers>
                <DataTrigger Binding="{Binding SomeCondition}" Value="True">
                    <Setter Property="Effect">
                        <Setter.Value>
                            <DropShadowEffect />
                        </Setter.Value>
                    </Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>

请注意,SomeCondition 在您的视图模型中是一个布尔值 属性。只有当 SomeConditiontrue 时,才会应用效果。