Как пометить форму / поле как «грязное», если оно связано с данными? - PullRequest
5 голосов
/ 10 марта 2009

Если у меня есть форма с привязкой к данным, как узнать, изменил ли ее пользователь (введя текст в текстовое поле или выбрав элемент в поле со списком)? Я пытался подключиться к событию TextChanged моего текстового поля, но проблема в том, что, когда моя форма участвует в привязке данных, происходит событие TextChanged, преждевременно помечая мою форму как «грязную».

Ответы [ 4 ]

3 голосов
/ 25 апреля 2009

попробуйте реализовать

public partial class Window1 : INotifyPropertyChanged

, а затем

public event PropertyChangedEventHandler PropertyChanged;

public string UserName
{
    get { return _UserName; }
    set { if (value != _UserName)
    {
        _UserName = value;
        OnNotifyPropertyChanged("UserName");
    }}
}

private void OnNotifyPropertyChanged(string property)
{
  if (PropertyChanged != null)
    PropertyChanged(this, new PropertyChangedEventArgs(property));
}

и привязка данных как

<TextBox Text="{Binding UserName}"/>
1 голос
/ 10 марта 2009

Ваш класс модели реализует INotifyPropertyChanged? Если это так, вы можете добавить обработчик для события PropertyChanged в классе и наблюдать за изменяемым свойством.

Если вы еще не внедрили INotifyPropertyChanged, может быть, механизм, который вы используете для уведомления об обновлениях пользовательского интерфейса, можно использовать и здесь?

0 голосов
/ 21 мая 2012

-> http://www.mishainthecloud.com/2009/07/simple-dirty-tracking-for-winforms-in-c.html.

Я знаю, что это немного поздно, но мне нравится такой подход :) Инкапсулированное совершенство.

После привязки элементов управления вызовите SetAsClean (). Этот вызов метода, вероятно, может быть инкапсулирован в тот же класс dirty-tracking путем обработки некоторых событий BindingSources.

0 голосов
/ 10 марта 2009

Когда вы впервые отображаете страницу, сохраняйте значения формы в массиве, когда срабатывает событие TextChanged, сравните его с тем, что у вас уже есть, если это другая грязная форма.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...