在WPF MVVM中停止隧道事件触发器?

时间:2014-09-09 09:42:00

标签: c# 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/>

2 个答案:

答案 0 :(得分:1)

如果您正在使用MVVM,为什么不使用SelectedItem依赖项属性并在ViewModel中绑定属性,例如:

<TabControl ItemsSource="{Binding Path=Items, Mode=OneWay}"
            SelectedItem="{Binding Path=SelectedItem, Mode=TwoWay}">
</TabControl>

答案 1 :(得分:0)

使用绑定到PreviewMouseLeftButtonDown viewModel TabItem的{​​{1}}上的ICommand in my事件触发器来解决此问题

: