如何专门在 GridViewColumnHeader 上附加 Click 事件处理程序
How to attach a Click event handler specifically on a GridViewColumnHeader
我正在尝试在 GridViewColumnHeader 上附加点击事件:
为此我使用了以下内容:
<ListView GridViewColumnHeader.Click="HandleColumnHeaderClicked">
</ListView>
而点击事件在后面的代码中是这样处理的:
private void HandleColumnHeaderClicked(object sender, RoutedEventArgs e)
{
if (e.OriginalSource is GridViewColumnHeader)
{
var column = ((GridViewColumnHeader)e.OriginalSource).Column;
vm.SelectedColumnCommand.Execute(column.Header);
e.Handled = true;
}
}
一切似乎都很好,但是 GridViewColumnHeader.Click 实际上与 ButtonBase.Click 相同。这意味着我的列表视图中的任何 ButtonBase 控件都将触发此事件,并且我的列表视图可能有数以千计的此类控件。这似乎不是最佳做法。
我的问题是:如何专门挂钩 GridViewColumnHeader 类型的点击事件(而不是任何其他 ButtonBase 控件)。
提前致谢。
在 Style
中使用 EventSetter 与 TargetType
。
我正在尝试在 GridViewColumnHeader 上附加点击事件:
为此我使用了以下内容:
<ListView GridViewColumnHeader.Click="HandleColumnHeaderClicked">
</ListView>
而点击事件在后面的代码中是这样处理的:
private void HandleColumnHeaderClicked(object sender, RoutedEventArgs e)
{
if (e.OriginalSource is GridViewColumnHeader)
{
var column = ((GridViewColumnHeader)e.OriginalSource).Column;
vm.SelectedColumnCommand.Execute(column.Header);
e.Handled = true;
}
}
一切似乎都很好,但是 GridViewColumnHeader.Click 实际上与 ButtonBase.Click 相同。这意味着我的列表视图中的任何 ButtonBase 控件都将触发此事件,并且我的列表视图可能有数以千计的此类控件。这似乎不是最佳做法。
我的问题是:如何专门挂钩 GridViewColumnHeader 类型的点击事件(而不是任何其他 ButtonBase 控件)。
提前致谢。
在 Style
中使用 EventSetter 与 TargetType
。