[英]Stop Tunneling Event Trigger in WPF MVVM?
我想捕获一个TabItem选择更改事件,即仅当用户更改选项卡时才调用ViewModel命令。 目前,我已成功执行此命令,但是更改的选择正在沿可视化树向下挖掘,因此,更改的选择会捕获到整个选项卡项目中,而不仅仅是在用户更改选项卡时。 有什么方法可以将触发器限制为仅选项卡更改吗?:
<TabControl Margin="10">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding CollapsedExpanderCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<TabItem Header="Account" >
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
如果您使用的是MVVM,为什么不使用SelectedItem依赖属性并在ViewModel中绑定属性,例如:
<TabControl ItemsSource="{Binding Path=Items, Mode=OneWay}"
SelectedItem="{Binding Path=SelectedItem, Mode=TwoWay}">
</TabControl>
通过ICommand in my
viewModel上绑定到ICommand in my
的TabItem
上使用PreviewMouseLeftButtonDown
事件触发器来解决此问题:
<TabItem Header="Memberships" Margin="0,0,-5,-3" HorizontalAlignment="Right" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="PreviewMouseLeftButtonDown">
<i:InvokeCommandAction Command="{Binding MembershipTabSelectedCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.