wpf如何在按下按钮时禁用默认动画

时间:2010-10-04 19:27:11

标签: wpf binding wpf-controls

我有一个记忆卡游戏,我想点击一个按钮来绑定prorty按钮背景 这就是我在做的事情:

<Button 
  Name="btn"
  Click="Button_Click"
  DataContext="{Binding}"
  Height="65" Width="79"
  Background="Black"/>

<DataTemplate.Triggers>
  <Trigger SourceName="btn" Property="IsMouseCaptured" Value="True">
    <Setter TargetName="btn" Property="Background" Value="Green"/>
    <!--"{Binding Path=ButtonColor}"-->
  </Trigger>
</DataTemplate.Triggers>

因为我太无知而无法理解它不起作用(请注意,当我在defult状态下使用绑定时绑定本身会起作用)

1 个答案:

答案 0 :(得分:1)

似乎你要采用所有“代码隐藏”的方法,为什么还要打扰触发器呢?

只需在点击处理程序中设置btn.Background = new SolidColorBrush(Colors.Green);即可。

修改

基本上你的模板触发器正在工作,但不是你想象的那样。如果您进行了一些隔离测试,您会看到当您点击它时背景确实变为绿色,但会立即变回原来的颜色。

你最好做的是使用ToggleButton。这样,您可以使用IsChecked属性设置背景颜色。这里的诀窍是在点击其他切换时将其更改回来。这就是你的MVVM的用武之地。

情景:

你的View-Model将有一个说...“卡片”的集合,每张卡片都有一个属性来表示它是否已经“翻过”。现在,如果你已经出现了一张卡片,你的View-Model应该在你的“Cards”集合中循环,并将所有“Card”设置为“被调高”为假,除了一张“转向”的卡片当然。现在将ToggleButton.IsChecked属性绑定到它所绑定的每个“Card”模型的“已调出”属性。