WPF MVVM проверяет свойство перед установкой, когда пользователь меняет значение в DataGrid - PullRequest
0 голосов
/ 17 июня 2019

Проблема: У меня есть список класса, который отображается в Datagrid, одно из значений должно спрашивать пользователя, действительно ли он хочет его изменить.Это было реализовано с помощью MessageBox YesNo в Setter значения.

Проблема в том, что это окно сообщений не должно появляться каждый раз, когда вызывается Setter, например, когда новый объект добавляется в сетку данных с помощью диалога,он по-прежнему спросит, уверены ли вы, что хотите изменить значение того, что в данный момент создается.

Я не уверен, есть ли чистый способ сделать это, поэтому любая помощь приветствуется.

Прямо сейчас сеттер в классе выглядит так:

public string Value
{
  get { return _value; }
  set 
  {
       string message = "Are you sure you want to modify this value?";
       MessageBoxResult result = MessageBox.Show(message, "Confirmation",
       MessageBoxButton.YesNo, MessageBoxImage.Question);
       if (result == MessageBoxResult.Yes)
       {
          _value = value;
       }
       else
       {
        // Set to previously used value
        Value = _value;
       }
          RaisePropertyChanged("Value");
  }
}

1 Ответ

1 голос
/ 18 июня 2019

То, что вы пытаетесь сделать, связано с пользовательским интерфейсом. Вы можете проверить это. https://stackoverflow.com/a/45397612/7182460

Самый простой способ - использовать событие CellEditEnding.

private void Dg_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
    if (e.EditAction == DataGridEditAction.Commit)
    {
        string message = "Are you sure you want to modify this value?";
        MessageBoxResult result = MessageBox.Show(message, "Confirmation",
        MessageBoxButton.YesNo, MessageBoxImage.Question);
        if (result != MessageBoxResult.Yes)
        {
            (sender as DataGrid).CancelEdit();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...