Привязать ICommand к TabItem WPF (MVVM)

У меня есть TabControl с несколькими TabItems. Я хочу, чтобы один из моих элементов TabItem действовал как кнопка. Когда я нажимаю на TabItem, я хочу, чтобы он выполнял команду в моей связанной ViewModel. В моем представлении есть следующий код:

         <TabItem  Header="Manage Users" Visibility="{Binding IsAdmin, Converter={StaticResource VisibilityOfBool}}" >
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="MouseLeftButtonDown">
                    <i:InvokeCommandAction Command="{Binding Path=OpenLoginCommand}"/>
                </i:EventTrigger>
            </i:Interaction.Triggers>
        </TabItem>

OpenLoginCommand - это ICommand в ViewModel. У меня определено пространство имен интерактивности. Что мне здесь не хватает?


person francisg3    schedule 05.08.2013    source источник
comment
В чем твоя проблема? Если команда не работает, что говорит окно вывода?   -  person HichemSeeSharp    schedule 05.08.2013


Ответы (2)


Попробуйте PreviewMouseLeftButtonDown

<TabItem  Header="Manage Users" Visibility="{Binding IsAdmin, Converter={StaticResource VisibilityOfBool}}">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="PreviewMouseLeftButtonDown">
            <i:InvokeCommandAction Command="{Binding Path=OpenLoginCommand}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</TabItem>
person Nitesh    schedule 05.08.2013
comment
Назначьте EventTrigger <TabItem.Header> stackoverflow.com/questions/40396518/binding -a-tabitem-in-wpf Если вы назначите его <TabItem>, он сработает, когда вы щелкнете внутри содержимого вкладки. - person Jinjinov; 25.01.2021

Попробуйте использовать MouseDown вместо MouseLeftButtonDown в качестве ссылки на MSDN последнее событие не существует в TabItem элементе управления.

Если ваши требования настаивают на использовании только левой кнопки, проверьте состояние мыши в команде.

person Dennis    schedule 05.08.2013