我有一个记忆卡游戏,我想点击一个按钮来绑定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状态下使用绑定时绑定本身会起作用)
答案 0 :(得分:1)
似乎你要采用所有“代码隐藏”的方法,为什么还要打扰触发器呢?
只需在点击处理程序中设置btn.Background = new SolidColorBrush(Colors.Green);
即可。
修改强>
基本上你的模板触发器正在工作,但不是你想象的那样。如果您进行了一些隔离测试,您会看到当您点击它时背景确实变为绿色,但会立即变回原来的颜色。
你最好做的是使用ToggleButton。这样,您可以使用IsChecked属性设置背景颜色。这里的诀窍是在点击其他切换时将其更改回来。这就是你的MVVM的用武之地。
情景:
你的View-Model将有一个说...“卡片”的集合,每张卡片都有一个属性来表示它是否已经“翻过”。现在,如果你已经出现了一张卡片,你的View-Model应该在你的“Cards”集合中循环,并将所有“Card”设置为“被调高”为假,除了一张“转向”的卡片当然。现在将ToggleButton.IsChecked属性绑定到它所绑定的每个“Card”模型的“已调出”属性。