1

我为控件模板中的按钮定义了一个 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>

但是应该根据视图模型条件启用/禁用这种效果(鼠标悬停时更改不透明度),那么我该如何使用 XAML 做到这一点?

我尝试为 DoubleAnimation 的 To 值创建绑定,但它不起作用,因为 Storyboard 已冻结。我也在想模板选择器之类的东西,但是 VisualState Manager 没有这样的东西。

4

1 回答 1

1

我最近正在与某人讨论它,我可能会在 WinRT XAML 工具包中添加一个通用的解决方案来解决这个问题,它的工作方式类似于 WPF 中的 DataTriggers,但现在我只需将一个添加DependencyProperty到您的控件,将属性绑定到您的视图模型和值变化 - 更新视觉状态。

于 2013-02-12T19:10:50.763 回答