我为controltemplate中的按钮定义了一个VisualState:
<ControlTemplate x:Key="ButtonTemplate" TargetType="Button">
...
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
...
<VisualState x:Name="PointerOver">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="c1" Storyboard.TargetProperty="Opacity" To="0.7"/>
</Storyboard>
</VisualState>
...
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
...
</ControlTemplate>
但是这个效果(当鼠标悬停时改变不透明度)应该基于viewmodel条件启用/禁用,那么我该如何使用XAML呢?
我尝试为DoubleAnimation的To值创建绑定,但它不起作用,因为Storyboard被冻结了。我也在想像模板选择器,但VisualState Manager没有这样的东西。
答案 0 :(得分:1)
我最近和某人讨论过这个问题,我可能会将问题的通用解决方案添加到WinRT XAML工具包中,它与WPF中的DataTriggers类似,但是现在我只需要添加一个DependencyProperty
控制,将属性绑定到视图模型和值更改 - 更新可视状态。