2010-10-04 30 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