Перетащите элемент списка в заголовок Datagrid в WPF - PullRequest
1 голос
/ 01 августа 2011

Тривиально, но я действительно застрял на этом ... Как же я могу узнать, на какой столбец (или заголовок) DataGrid был добавлен элемент ??Я не вижу информации об этом в событии DataGrid.Drop.

1 Ответ

1 голос
/ 01 августа 2011

В данный момент я просто программирую некоторые D & D dataGrid, и единственный найденный способ сделать то, что вы просите, - это установить прослушиватель Drop на каждый dataGridColumnHeader и на каждый DataGridCell.

, как япишите, у меня есть прослушиватели Drop в моих ячейках, dataGridColumnHeaders и datagrids (для удаления фона сетки данных, если у вас недостаточно строк / столбцов для заполнения DG).

теслушатели получают индекс Row / col ячейки, где он применяется, используя что-то вроде myDataGrid.Columns.IndexOf(((DataGridCell)sender).Column) в слушателе отбрасывания ячеек, а затем вызывают общий метод в классе моего DG.

это на самом деле не так беспорядочно, как вы думаете.

edit: относительно вашего комментария: «Но как прикрепить обработчик события к заголовку DataGrid?»

в вашем MyDataGrid.xaml, например:

<DataGrid.ColumnHeaderStyle>
    <Style TargetType="{x:Type DataGridColumnHeader}">
        <EventSetter Event="DropEvent" Handler="ColumnHeaderDropHandler" />
    </Style>
</DataGrid.ColumnHeaderStyle>

и, конечно, вам нужно реализовать ColumnHeaderDropHandler в своем коде позади.

...