Dia*_*ana 3 .net wpf datagrid resize wpfdatagrid
我有一个System.Windows.Controls.DataGrid,其属性CanUserResizeColumns分配给True.现在,我可以通过使用鼠标左键单击2列标题来调整列的宽度.
但我还希望能够更改dataGrid的任何行中的列的宽度,而不仅仅是在列标题中.可能吗?
在您的dataGrid中,您可以使用DataGridTemplatealvern列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>
Run Code Online (Sandbox Code Playgroud)
然后在你的代码后面......做这个......
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;
}
}
Run Code Online (Sandbox Code Playgroud)
这样,单个单元级别的GridSplitter可以调整其整个列的大小.
如果您使用的是MVVM,则应将上述事件处理程序置于附加行为中
| 归档时间: |
|
| 查看次数: |
5860 次 |
| 最近记录: |