2010-10-04 26 views
0

我有一个存储卡的游戏,我想在点击一个按钮prorty按钮背景结合 这个defult动画是我在做什么:WPF如何禁用当按钮被按下

<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> 

因为我太无知,理解它不起作用(注意,绑定本身确实有效,当我使用绑定在诡辩状态)

回答

1

看来,如果你要去一个全“代码 - 后面“的方法,为什么即使打扰触发器?

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

编辑:

基本上模板触发器的工作,而不是你期待它的方式。如果你做了一些隔离测试,你会发现当你点击它时背景会变成绿色,但会立即变回原来的颜色。

你最好做的是使用ToggleButton。这样,您可以使用IsChecked属性来设置背景颜色。这里的技巧是在点击某个其他切换时将其改回。这是你的MVVM进来

情景:

您的视图模型将有发言权......“卡”的集合,并且每张卡可以有一个属性,如果它一直代表“止跌回升”。现在,如果您发现了卡片,您的视图模型应循环显示您的“卡片”集合,并将所有“卡片”设置为“失效”,除非一张卡片“打开”当然。现在将ToggleButton.IsChecked属性绑定到绑定到的每个“卡”模型的“启用”属性。

+0

你推断错了...我想在我的xmal中使用最多的cose时MVVM ... – 2010-10-05 11:00:03

+0

如果你正在往MVVM的方向走,那么我不希望看到事件处理程序,如Button.Click,而不是你应该使用命令绑定。请参阅MVVM方法的编辑答案。 – 2010-10-06 02:30:47