gpt4 book ai didi

.net - WPF 数据网格 : resizing columns

转载 作者:行者123 更新时间:2023-12-01 10:09:11 25 4
gpt4 key购买 nike

我有一个 System.Windows.Controls.DataGrid,其属性 CanUserResizeColumns 分配给了 True。现在,我可以通过在 2 个列标题之间单击鼠标左键来调整列的宽度。

但我还希望能够更改 dataGrid 的任何行中的列宽,而不仅仅是列标题中的列宽。可能吗?

最佳答案

在您的数据网格中,您可以使用 DataGridTemplate 列和 GridSplitter 来实现这一点。

 <toolkit:DataGridTemplateColumn Header="Text" >
<toolkit:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Text}"/>
<GridSplitter Grid.Column="1" Width="3"
DragIncrement="1"
DragDelta="GridSplitter_DragDelta"
Tag="{Binding BindsDirectlyToSource=True,
RelativeSource={RelativeSource
AncestorType={x:Type toolkit:DataGridCell}}}"/>
</Grid>
</DataTemplate>
</toolkit:DataGridTemplateColumn.CellTemplate>
</toolkit:DataGridTemplateColumn>

然后在你的代码后面...做这个...

    private void GridSplitter_DragDelta(
object sender,
System.Windows.Controls.Primitives.DragDeltaEventArgs e)
{
var gridSplitter = sender as GridSplitter;

if (gridSplitter != null)
{
((DataGridCell) gridSplitter.Tag).Column.Width
= ((DataGridCell) gridSplitter.Tag).Column.ActualWidth +
e.HorizontalChange;
}
}

这样,单个单元格级别的 GridSplitter 可以调整其整个列的大小。

如果您使用的是 MVVM,则上述事件处理程序应放在附加行为中

关于.net - WPF 数据网格 : resizing columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7468125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com