Как использовать событие Click в GridViewColumn на WPF TreeView / ListView? - PullRequest
1 голос
/ 20 апреля 2011

В настоящее время у меня есть GridViewColumns, например:

<GridViewColumn Width="20">
    <GridViewColumnHeader Content="X" />
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <Image Width="18"
                Height="18"
                Source="{Binding VisibleIcon}"
                Opacity="{Binding VisibleOpacity}"/>
                <TextBlock Text="{Binding Name}"/>
            </StackPanel>
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

где я хочу что-то сделать с элементом, который щелкнул по этому столбцу. Но я не знаю, как добавить событие Click, потому что ни GridViewColumn, ни Image не имеет события Click.

Я надеялся на что-то вроде этого:

void ClickEvent ...
{
    SelectLayer (boundDataItem);
    // boundDataItem is of type `Layer`.
}

РЕДАКТИРОВАТЬ: Я обнаружил событие MouseLeftButtonDown, но оно не дает мне элемент данных с привязкой по нажатию, может только получить изображение или текст, но они не являются уникальными для поиска изображения.

EDIT2: Другое дело даже с MouseLeftButtonDown, оно работает только, если я нажимаю на сам TextBlock, а не за его пределы даже в пределах того же GridViewColumn.

1 Ответ

1 голос
/ 20 апреля 2011

Вы можете добавить обработчик в свой корневой элемент (StackPanel.MouseLeftButtonDown), затем в своем обработчике вы можете получить доступ к связанному элементу, используя var layer = (sender as FrameworkElement).DataContext as Layer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...