Как программно связать ширину DataGridColumn с другим DataGridColumn - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь программно связать ширину столбца из одной таблицы с шириной столбца в другой таблице. Как мне это сделать? Вот мой код:

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>

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

вы используете неверный WidthProperty DP в коде.

измените его на

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

DataGridColumn.WidthProperty имеет тип DataGridLength.

0 голосов
/ 17 мая 2018
Width="{Binding ElementName=ClassName, Path=ActualWidth}"

Это должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...