2011-12-09 44 views
2

如何將Checkbox.checked路由事件轉換爲MVVM模式的命令?將RoutedEvent轉換爲WPF中MVVM模式的命令

參考 - 考慮按鈕點擊路由事件,當我們爲button指定命令時,button.click事件被視爲命令。它執行相應的命令。

我google了它,我得到了與EventBehaviourFactory的解決方案。沒有使用EventBehaiourFactory可能嗎?

+0

你想使用命令instaad of event或attach命令來處理事件嗎? – sll

+0

爲什麼你不能綁定複選框的IsChecked屬性TwoWay。 –

回答

8

這是WPF中的常見要求。最廣泛使用的解決方案是使用InteractivityBlend SDK

此的xmlns命名空間添加到您的XAML:

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 

然後,你可以這樣做:

<CheckBox> 
    <i:Interaction.Triggers> 
     <i:EventTrigger EventName="Checked"> 
      <i:InvokeCommandAction Command="{Binding MyCommand}" /> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 
</CheckBox> 

當然,你需要添加System.Windows.Interactivity.dll您的項目位於(對我而言至少):C:\Program Files (x86)\Microsoft SDKs\Expression\Blend 3\Interactivity\Libraries\WPF\System.Windows.Interactivity.dll

+0

如果這解決了您的問題,請接受答案。 –

+0

嘿謝謝。它真的很有幫助。但如果沒有Blend那麼該如何解決這個問題。 – rohanw

+0

@rohanw:您可以下載包含此程序集的[Blend SDK](http://www.microsoft.com/download/en/details.aspx?id=10801)。 –