DataGridCheckBoxColumn не работает нормально - PullRequest
2 голосов
/ 15 ноября 2011

Я только что создал DataGrid:

    <DataGrid>
        <DataGrid.Columns>
            <DataGridTextColumn ... />
            <DataGridCheckBoxColumn Binding="{Binding Path=IsEditing, Mode=TwoWay}" Header="IsEditing" />
        </DataGrid.Columns>
    </DataGrid>

Моя проблема в том, что , когда я хочу установить этот флажок внутри записи, сначала выбирается строка, и только потом я могу установить этот флажок ... Это очень неудобно ... И кроме того. .. Событие для свойства зависимостей объектов, для которых создана эта DataGrid, также запускается, когда я выберу другую строку .

Чтобы быть более ясным, я объясню вам шаг за шагом:

  1. Я хочу выбрать элемент, который будет запускать событие свойства зависимости.
  2. Я нажимаю на кнопку-флажок, но выбран только ряд проверенных строк
  3. Я должен снова щелкнуть на checbox, чтобы проверить его, но событие также не запускается
  4. Я должен щелкнуть / выбрать другую строку, чтобы сделать событие запуска свойства зависимостей последнего выбранного объекта / строки

Почему это работает так ужасно? Есть ли возможность сделать его более удобным для пользователя (для меня тоже)?

Ответы [ 2 ]

0 голосов
/ 13 ноября 2015

Добавить свойство IsThreeState = "False" в DataGridCheckBoxColumn

0 голосов
/ 19 октября 2012

Вам необходимо добавить событие MouseLeftButtonUp для DataGrid:

    private void GridMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
        var grid = sender as DataGrid;

        if (grid == null)
        {
            return;
        }

        // Assume first column is the checkbox column.
        if (grid.CurrentColumn == grid.Columns[0])
        {
            var gridCheckBox = (grid.CurrentColumn.GetCellContent(grid.SelectedItem) as CheckBox);

            if (gridCheckBox != null)
            {
                gridCheckBox.IsChecked = !gridCheckBox.IsChecked;
            }
        }
    }
...