WPF - выровнять флажок со столбцом сетки данных - PullRequest
0 голосов
/ 04 октября 2018

Мне нужно установить флажок над столбцом в сетке данных и оставить флажок выровненным по левому краю столбца, даже если размер столбцов изменен (или переупорядочен) пользователем.

enter image description here

Установка флажка в заголовке столбца, вероятно, не вариант.
Первая задача - узнать, когда пользователь изменяет размер столбца.
Существует событие 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>  
...