В WPF у меня есть Grid с определенным количеством столбцов, а ширина каждого столбца привязана к ширине столбца 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.
Когда я запускаю программу и вручную изменяю размер столбцов, я вижу изменение размера столбцов таблицы (ShowGridLines = true) и элементы, привязанные к определенным столбцам таблицы, перемещаются соответствующим образом.
Однако, когда я пытаюсь добавить сетку данных и столбцы таблицы в код, я не могу получить привязку к работе (без ошибок привязки). Вот пример:
binding = new Binding()
{
Source = dataGrid.Columns[col],
Path = new PropertyPath("ActualWidth"),
Mode = BindingMode.OneWay,
};
colDef.SetBinding(WidthProperty, binding);
Я пробовал другие варианты (например, ElementName = "DataGridColumn1", Path = new PropertyPath («ActualWidth»), но не получаю ни ошибку (и не привязку), либо ошибку «не могу найти источник для привязки» или ошибку пути BindingExpression .
Должен быть способ установить привязку в коде ...?