似乎DataGrid.NET 4附带的内容不包含列和行标题点击的事件.我想接收列标题点击的事件,因为我想提供自己的排序行为并关闭默认排序,这是因为我的视图模型是一个分页模型,一次只显示25/50/100行,默认排序当然只对当前页面进行排序.
现在我可以创建一个DataGridColumnHeader包含可点击元素和设置的新样式ColumnHeaderStyle,虽然这看起来很痛苦,因为我很难搞清楚哪些列被点击等等.
还有其他人反对这个并解决了吗?
Jef*_*ado 28
标题只是按钮.与任何按钮一样,您可以注册该Click事件以捕获这些点击.只需设置样式定位DataGridColumnHeader并添加Click事件处理程序即可.然后在处理程序中,您可以通过直接访问标题sender.然后,您可以获得Column与该标头相关联的信息以及与之关联的其他信息.
<DataGrid>
<DataGrid.Resources>
<Style TargetType="DataGridColumnHeader">
<EventSetter Event="Click" Handler="columnHeader_Click" />
</Style>
</DataGrid.Resources>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
然后在代码中:
private void columnHeader_Click(object sender, RoutedEventArgs e)
{
var columnHeader = sender as DataGridColumnHeader;
if (columnHeader != null)
{
// do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
进一步观察DataGrid,我注意到有一处ColumnHeaderStyle房产.我认为通过这个属性应用样式会更好.
<DataGrid>
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<EventSetter Event="Click" Handler="columnHeader_Click" />
</Style>
</DataGrid.ColumnHeaderStyle>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19704 次 |
| 最近记录: |