您的位置:首页 > 其它

WPF 中如何使得DataGrid的Column有鼠标点击相应

2014-04-24 19:16 543 查看
http://stackoverflow.com/questions/5895803/how-do-i-capture-click-events-on-a-datagrid-column-headers

The headers are just buttons. Like any button, you can register to the
Click
event
to capture those clicks. Just set a style targeting
DataGridColumnHeader
and
add a
Click
event
handler. Then within the handler, you have access to the header directly via the
sender
.
You could then get the
Column
associated
with that header and other information associated with it.

<DataGrid>
<DataGrid.Resources>
<Style TargetType="DataGridColumnHeader">
<EventSetter Event="Click" Handler="columnHeader_Click" />
</Style>
</DataGrid.Resources>
</DataGrid>


Then in the code:
private void columnHeader_Click(object sender, RoutedEventArgs e)
{
var columnHeader = sender as DataGridColumnHeader;
if (columnHeader != null)
{
// do stuff
}
}


Looking further into the
DataGrid
,
I noticed that there's a
ColumnHeaderStyle
property.
I think it would be a better idea to apply the style through this property instead.
<DataGrid>
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<EventSetter Event="Click" Handler="columnHeader_Click" />
</Style>
</DataGrid.ColumnHeaderStyle>
</DataGrid>


share|edit|flag
edited May
8 '11 at 9:05

answered May 5 '11 at 10:51




Jeff
Mercado

38.8k55497

Thank you very much Jeff, I had never used
EventSetter
before,
very handy. I have a followup question, do you know if it's possible to get the style behaviour when
CanUserSortColumns="False"
so
the headers respond to mouse hover and show the sort direction, or will I need to restyle these myself? – Brett
Ryan May
6 '11 at 3:05
@Brett: Sorry, could you rephrase that? I'm not sure I understand what you are asking. It sounds to
me like you want to get the templates associated with these headers when sorting is disabled? – Jeff
Mercado May
6 '11 at 3:32
1upvote
flag
Thanks Jeff, Sorry for the ambiguity. What I'm trying to do is provide my own sorting logic, with from
your help I have now achieved this, however I of course have to set
CanUserSortColumns
to
False
otherwise
the control will try to perform the sort false, however I want the nice "hover" affect when moving the cursor over the column header, and would like the "up/down" arrow indicating sort direction (though the latter is less important). Your help is very much
appreciated. – Brett
Ryan May
6 '11 at 4:04
@Brett: I'm pretty sure you can, I just don't remember how to be honest. Though I will be investigating.
You might want to post that as another question. – Jeff
Mercado May
6 '11 at 5:10
np Jeff, thank you once again for your help. – Brett
Ryan May
6 '11 at 8:37
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐