gpt4 book ai didi

wpf - 如何在代码中绑定(bind) WPF 网格列宽?

转载 作者:行者123 更新时间:2023-12-05 00:43:34 25 4
gpt4 key购买 nike

在 WPF 中,我有一个定义了许多列的网格,并且每列的宽度都绑定(bind)到 DataGrid 列的宽度,如下所示:

<Grid.ColumnDefinitions>
<ColumnDefinition Width="{Binding ElementName=dataGrid, Path=RowHeaderWidth}" />
<ColumnDefinition Width="{Binding ElementName=Column0, Path=ActualWidth}" />
<ColumnDefinition Width="{Binding ElementName=Column1, Path=ActualWidth}" />
Etc.

<Controls:DataGrid BorderBrush="White" ItemsSource="{Binding DataTable}"
Name="datagrid1" Grid.Row="2" RowHeaderWidth="0">

<Controls:DataGrid.Columns>
<Controls:DataGridTextColumn Header="Included" Width="50" x:Name="Column0" />
<Controls:DataGridTextColumn Header="First" Width="100" x:Name="Column1" />
Etc.

当我运行程序并手动调整列大小时,我可以看到 Grid 列正在调整大小 (ShowGridLines = true),并且与特定 Grid 列相关的元素会适当移动。

但是,当我尝试在代码中添加数据网格和网格列时,我无法使绑定(bind)工作(没有绑定(bind)错误)。这是一个例子:
 binding = new Binding()
{
Source = dataGrid.Columns[col],
Path = new PropertyPath("ActualWidth"),
Mode = BindingMode.OneWay,
};

colDef.SetBinding(WidthProperty, binding);

我尝试了其他变体(例如 ElementName = "DataGridColumn1", Path = new PropertyPath("ActualWidth") 但没有错误(也没有绑定(bind))或“找不到绑定(bind)源”错误或 BindingExpression 路径错误。

必须有一种方法可以在代码中设置绑定(bind)...?

最佳答案

我找到了答案。这一行:

 colDef.SetBinding(WidthProperty, binding);

应改为:
 colDef.SetBinding(ColumnDefinition.WidthProperty, binding);

关于wpf - 如何在代码中绑定(bind) WPF 网格列宽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/918481/

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