如何在WPF TreeView / ListView上的GridViewColumn中使用Click事件?

时间:2011-04-20 17:34:56

标签: c# .net wpf xaml binding

目前我有一些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事件,因为GridViewColumnImage都没有Click事件。

我希望有这样的事情:

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

编辑:我发现了一个MouseLeftButtonDown事件,但是没有给我点击的绑定数据项,只能获取图像或文本,但它们不是唯一的图像可供查找。

EDIT2:即使使用MouseLeftButtonDown,它也是有用的,只有点击TextBlock本身,而不是在同一GridViewColumn内的其他地方。

1 个答案:

答案 0 :(得分:1)

您可以在根元素(StackPanel.MouseLeftButtonDown)上添加处理程序,然后在处理程序中,您可以使用var layer = (sender as FrameworkElement).DataContext as Layer到达绑定项目。