我有一个使用MVVM模式构建的WPF 3.5应用程序。我有一个tabcontrol,我想在用户点击某个选项卡时(jn我的情况是“预览”选项卡),在视图模型上执行一个ICommand。 如何使用XAML将我的ICommand连接到tabitem或tabcontrol?我正在使用MVVM,所以我不想使用事件并在代码隐藏中获得污秽,肮脏的代码。使用XAML(MVVM)将ICommand绑定到WPF tabcontrol/tabite
我想我在这里错过了一些简单的东西! 感谢,P
我有一个使用MVVM模式构建的WPF 3.5应用程序。我有一个tabcontrol,我想在用户点击某个选项卡时(jn我的情况是“预览”选项卡),在视图模型上执行一个ICommand。 如何使用XAML将我的ICommand连接到tabitem或tabcontrol?我正在使用MVVM,所以我不想使用事件并在代码隐藏中获得污秽,肮脏的代码。使用XAML(MVVM)将ICommand绑定到WPF tabcontrol/tabite
我想我在这里错过了一些简单的东西! 感谢,P
请参阅这篇文章:hooking up commands to events
或者你可以使用这个approach
你应该使用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)
我无法得到这与WPF 3.5一起工作。 – 2011-03-02 05:07:17
你也可以在WPF3.5中做到这一点,只有你必须使用混合SDK(谷歌它)。值得注意的是,我在这里使用'behaviour',虽然它是WPF4中的一个新功能,但从WPF3开始基本可用 - 它只是一个附加属性技巧。 – 2011-03-02 05:23:36
嗯。试过了。但不能过去这个美:“XamlParseException:不能将'System.Windows.Interactivity.EventTrigger'类型的内容添加到'System.Windows.Interactivity.TriggerCollection'类型的对象。” – 2011-03-02 08:09:40
感谢您的提示!这种风格适用于我:http://sachabarber.net/?p=510 – 2011-03-07 05:52:34