Обработка события щелчка на всей поверхности UserControl - PullRequest
1 голос
/ 24 октября 2011

Я использую TreeView в сценарии MVVM.Поскольку отображение и контекстное меню дочерних элементов TreeViewItem зависит от типа модели представления, я использую шаблоны данных для выбора нужного элемента управления UserControl для отображения (гораздо проще управлять, чем StyleSelector).

Моя проблема заключается в том, чтоМне нужно обрабатывать команды, когда пользовательский элемент управления нажимается в любом месте на его поверхности .Я использовал EventTrigger, непосредственно связанный с UserControl, но событие щелчка обрабатывается только тогда, когда я нажимаю на текст TextBlock или изображения.Вот пример кода:

<UserControl x:Class="FolderTreeView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="MouseLeftButtonDown">
            <i:InvokeCommandAction Command="{Binding Path=DisplayCommand}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
    <StackPanel Orientation="Horizontal">
        <Image Source="{Binding Path=Icon}"/>
        <TextBlock Text="{Binding Path=DisplayName}"/>
    </StackPanel>  
</UserControl>

Есть идеи, как можно заставить это работать?

1 Ответ

4 голосов
/ 24 октября 2011

Дайте вашему UserControl цвет фона. По умолчанию цвет фона Transparent, что означает, что тесты попадания проходят через него

<UserControl Background="White" ... />
...