2011-03-02 50 views
3

我有一个使用MVVM模式构建的WPF 3.5应用程序。我有一个tabcontrol,我想在用户点击某个选项卡时(jn我的情况是“预览”选项卡),在视图模型上执行一个ICommand。 如何使用XAML将我的ICommand连接到tabitem或tabcontrol?我正在使用MVVM,所以我不想使用事件并在代码隐藏中获得污秽,肮脏的代码。使用XAML(MVVM)将ICommand绑定到WPF tabcontrol/tabite

我想我在这里错过了一些简单的东西! 感谢,P

回答

1

你应该使用InvokeCommandAction,看起来像这样:

 <TabItem Header="TabItem"> 
      <i:Interaction.Triggers> 
       <i:EventTrigger EventName="MouseLeftButtonDown"> 
        <i:InvokeCommandAction Command="SomeCommand"/> 
       </i:EventTrigger> 
      </i:Interaction.Triggers> 
      <Grid /> 
     </TabItem> 

一定要包括在顶部的xmlns:

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 

,当然还有参考System.Windows.Interactivity(新WPF4)

+0

我无法得到这与WPF 3.5一起工作。 – 2011-03-02 05:07:17

+0

你也可以在WPF3.5中做到这一点,只有你必须使用混合SDK(谷歌它)。值得注意的是,我在这里使用'behaviour',虽然它是WPF4中的一个新功能,但从WPF3开始基本可用 - 它只是一个附加属性技巧。 – 2011-03-02 05:23:36

+0

嗯。试过了。但不能过去这个美:“XamlParseException:不能将'System.Windows.Interactivity.EventTrigger'类型的内容添加到'System.Windows.Interactivity.TriggerCollection'类型的对象。” – 2011-03-02 08:09:40