C# 如何以编程方式从另一个DataGridColumn绑定宽度DataGridColumn

C# 如何以编程方式从另一个DataGridColumn绑定宽度DataGridColumn,c#,wpf,xaml,data-binding,datagrid,C#,Wpf,Xaml,Data Binding,Datagrid,我试图通过编程将一个表中的列宽度绑定到另一个表中的列宽度。我怎么做?这是我的密码: DataGridTextColumn classNameColumn = new DataGridTextColumn(); classNameColumn.Header = "CLASS"; classNameColumn.Binding = new Binding("CLASS_NAME"); classNameColumn.IsReadOnly = true; ScheduleGrid.Columns.Ad

我试图通过编程将一个表中的列宽度绑定到另一个表中的列宽度。我怎么做?这是我的密码:

DataGridTextColumn classNameColumn = new DataGridTextColumn();
classNameColumn.Header = "CLASS";
classNameColumn.Binding = new Binding("CLASS_NAME");
classNameColumn.IsReadOnly = true;
ScheduleGrid.Columns.Add(classNameColumn);

DataGridTextColumn noneColumn = new DataGridTextColumn();
noneColumn.Header = "";
var bindingWidth = new Binding("Width") { Source = classNameColumn, Mode = BindingMode.TwoWay };
BindingOperations.SetBinding(noneColumn, WidthProperty, bindingWidth);
WeeekHeaderGrid.Columns.Add(noneColumn);
在XAML代码中,这可以很好地工作:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>

    <DataGrid x:Name="ScheduleGrid" Grid.Row="1" AutoGenerateColumns="False" SelectionMode="Single"
              CanUserReorderColumns="False" CanUserAddRows="False" CanUserSortColumns="False"
              CellEditEnding="ScheduleGrid_CellEditEnding">
        <DataGrid.Columns>
            <DataGridTextColumn x:Name="ClassName" Header="CLASS" Binding="{Binding CLASS_NAME}" />
        </DataGrid.Columns>
    </DataGrid>
    <DataGrid x:Name="WeeekHeaderGrid" Grid.Row="0" CanUserReorderColumns="False" CanUserAddRows="False" CanUserSortColumns="False" CanUserResizeColumns="True">
        <DataGrid.Columns>
            <DataGridTextColumn Header="" Width="{Binding Source={x:Reference ClassName}, Path=Width, Mode=TwoWay}"/>
        </DataGrid.Columns>
    </DataGrid>
</Grid>


这应该是可行的。

您在代码中使用了不正确的
WidthProperty
DP

换成

BindingOperations.SetBinding(noneColumn, DataGridColumn.WidthProperty, bindingWidth);

DataGridColumn.WidthProperty
在XAML代码中具有类型
DataGridLength

“这很好:“--所以…@EdPlunkett我正在尝试使用C代码中的循环创建表列。XAML解决方案不适合me@EdPlunkett,可以保证给定的xaml标记有等价的c#代码,但c#实现并不明显sometimes@ASh对。但是在XAML中使用它通常是一个更好的主意。我的XAML解决方案也可以工作。但它不适合我。我试图在C代码中使用循环创建表列。
BindingOperations.SetBinding(noneColumn, DataGridColumn.WidthProperty, bindingWidth);