2014-09-13 5 views
0

Я использую привязку с двумя способами для текстовых полей winforms. мне нужно работать, если пользователь изменил мои данные Глядя на помощь дляОбнаружение грязных с использованием привязки данных winforms

the CurrentItemChanged Event

Это кажется, что это событие делает огонь, если свойство изменилось, однако он также срабатывает, если ток изменился.

Есть ли способ узнать, изменились ли данные?

a similar question is also asked here , но не ответили на мой взгляд

Оливер упоминает «, если ваш объект в списке поддержки событие INotifyPropertyChanged и заменить список по BindingList вы можете подписаться на событие ListChanged в BindingList, чтобы получить информацию о любых изменениях, сделанных пользователем ».

Мое приложение соответствует этим условиям, но я не могу заставить это работать. Свойство ListChangedType.ItemChanged выглядело обнадеживающим, но оно меняется, когда я перехожу к следующей записи без изменения данных.

Я нашел ссылку at Microsoft here, но, конечно, это не может быть так сложно!

ответ

0

Это похоже на работу

void bindingSource_BindingComplete(object sender, BindingCompleteEventArgs e) 
     { 
      if (e.BindingCompleteContext == BindingCompleteContext.DataSourceUpdate) 
      { 
       var person = (Person)bindingSource.Current; 

       if (person.State == State.Unchanged && (e.BindingCompleteState == BindingCompleteState.Success) 
       && e.Binding.Control.Focused) 
       { 
        person.State = State.Modified; // using Julie Lerman's repositories technique 
       } 
      } 
     }