作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 WPF DataGrid,我希望允许用户通过单击列标题来选择整个列。我目前将 SelectionUnit 设置为 CellOrRowHeader,因为我希望行具有相同的功能(效果很好)。是否有一种简单的方法也允许通过单击列标题来选择列?
最佳答案
您有多种选择。一种是为 DataGrid 的页眉样式创建您自己的模板。在 DataTemplate 标记内,您可以更改 header 的模板。 (您可以将 Button 替换为 TextBlock 或任何您想要的东西。)
<DataGrid>
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader" >
<Setter Property="Foreground" Value="Blue" />
<Setter Property="ContentTemplate" >
<Setter.Value>
<DataTemplate>
<Button Content={Binding Content}" MouseDown="mouseDownEventHandler">
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGrid.ColumnHeaderStyle>
</DataGrid>
或者如果您使用 DataGrid.Columns 来填充您的列并且您需要分别设置它们中的每一个,您可以使用这个:
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn HeaderTemplate="{StaticResource MyTemplate1"/>
<DataGridHyperlinkColumn HeaderTemplate="{StaticResource MyTemplate2"/>
</DataGrid.Columns>
</DatGrid>
MyTemplate1 和 2 应该事先在控件的资源中定义。
编辑:
根据 this link 的另一种方法是将 PreviewMouseDown 添加到您的 DataGrid,然后找出鼠标按下是否发生在标题上。
这是她的事件处理程序的简单版本:
DependencyObject dep = (DependencyObject)e.OriginalSource;
while ((dep != null) && !(dep is DataGridColumnHeader))
{
dep = VisualTreeHelper.GetParent(dep);
}
if (dep == null) return;
if (dep is DataGridColumnHeader)
{
MessageBox.Show(((DataGridColumnHeader)dep).Content.ToString());
}
关于c# - DataGrid 选择整列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9065066/
我正在使用 DMatrix 结构来分配动态大小的矩阵,我在其中使用 L2 范数通过归一化列向量重复覆盖每一列。 // a is some DMatrix of arbitrary size let c
我表中的当前数据是: a b --------- -1 5 -11 2 -5 32 我的要求是将a列的所有数据都转换成负值。 但是如何选择整列将正值更新为负值呢? 最佳答案
我是一名优秀的程序员,十分优秀!