2

我可以使用以下方法轻松地为按钮添加一点发光效果:

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

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

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

我正在考虑创建两个附加到同一命令的按钮,隐藏一个并基于 ViewModel 显示另一个。这会奏效,但它似乎有点蛮力。

想法?

谢谢。

Ĵ

4

2 回答 2

1

我认为你真的需要一个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>
于 2016-10-25T15:33:51.197 回答
1

您需要为您的 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是视图模型中的布尔属性。只有当SomeConditionis时true,才会应用效果。

于 2016-10-25T15:36:44.410 回答