如何知道何时点击当前活动的标签项wpf?

时间:2018-05-17 15:34:43

标签: c# wpf mvvm data-binding

假设tab1tab2为两个标签项,当前有效标签为tab1SelectedIndex只有在SelectedIndex发生更改时才会调用属性集。我想要一个甚至在当前活动的选项卡上执行的。 MouseDown事件不适用于标签项。

还有其他解决方案吗?

1 个答案:

答案 0 :(得分:0)

我建议你制作一个Tab HeaderTemplate来处理点击。请看下面的示例代码:

<Window.Resources>
    <DataTemplate x:Key="myTabHeaderTemplate">
        <!-- Handle click here -->
        <Grid MouseDown="TabControl_MouseDown">
            <TextBlock Text="{Binding}" Margin="5" />
        </Grid>
    </DataTemplate>
</Window.Resources>

<TabControl 
    Background="WhiteSmoke" 
    SelectedItem="{Binding CurrentTab}">

    <TabItem Header="tab 1" Background="LightPink" HeaderTemplate="{StaticResource myTabHeaderTemplate}" />
    <TabItem Header="tab 2" Background="LightGreen" HeaderTemplate="{StaticResource myTabHeaderTemplate}" />
</TabControl>
  • 即使您的标签已被选中,也会调用TabControl_MouseDown()

您必须在后面的代码中实现此方法:

private void TabControl_MouseDown(object sender, MouseButtonEventArgs e){ ... }

或者您可以将其绑定到ViewModel中的命令...