Мне нужно установить флажок над столбцом в сетке данных и оставить флажок выровненным по левому краю столбца, даже если размер столбцов изменен (или переупорядочен) пользователем.
Установка флажка в заголовке столбца, вероятно, не вариант.
Первая задача - узнать, когда пользователь изменяет размер столбца.
Существует событие ColumnHeaderDragStarted, но я думаю, что оно возникает, когда пользователь перетаскивает заголовок столбца, чтобы изменить его порядок.Это также относится к операции изменения размера столбца?
Следующая задача - переместить флажок при перемещении столбца.Как определить положение левого края столбца (например, «Val1») по отношению к левому краю содержащей сетки?Я подозреваю, что если это значение может быть определено, его можно использовать для установки флажка.
Спасибо за понимание этой проблемы -
ОБНОВЛЕНИЕ 2
Этот xaml обеспечивает большую часть желаемого поведения, но выравнивание не верно,Если пользователь перемещает разделитель между «Id» и «Val1», флажок перемещается.
Однако цель состоит в том, чтобы флажок оставался выровненным над «Id»;он должен двигаться только тогда, когда разделитель между «Name» и «Id» перемещен.
<Grid x:Name="LayoutRoot">
<Grid.RowDefinitions>
<RowDefinition Height="32" />
<RowDefinition />
</Grid.RowDefinitions>
<DataGrid x:Name="DataGrid"
Grid.Row="1" Grid.Column="0" />
<Canvas Grid.Row="0" Grid.RowSpan="2" >
<CheckBox Content="Check One"
Canvas.Top="10"
Canvas.Left="{Binding Columns[1].ActualWidth, ElementName=DataGrid}" />
</Canvas
</Grid>
ОБНОВЛЕНИЕ :
Кажется, что это может быть полезным подходом: https://stackoverflow.com/a/41094009/107037
Проблема с установкой флажка все еще существует, однако ...
Так как кто-то спросил:
Grid x:Name="LayoutRoot">
<Grid.RowDefinitions>
<RowDefinition Height="32" />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<CheckBox Content="Check One" Grid.Column="1" />
<CheckBox Content="Check One" Grid.Column="2" />
<DataGrid x:Name="DataGrid"
Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="4" ></DataGrid>
</Grid>