2009-07-27 3 views
1

Я привязываюсь к значениям хэш-таблицы из таблицы данных, и значения отображаются в порядке, но изменения не сохраняются для объекта, когда я вношу изменения в текстовое поле например. Любая идея, почему это так?WPF, двусторонняя привязка к хеш-таблице

<DataTemplate x:Key="ResponseItemTemplate"> 
     <StackPanel Orientation="Horizontal" > 
      <TextBox Width="200" Text="{Binding Path=Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" /> 
     </StackPanel> 
    </DataTemplate> 

Спасибо за ваше время

+0

Вы пробовали UpdateSourceTrigger = Explicit? –

+0

Явно обновляет источник привязки только при вызове метода UpdateSource. Так что это определенно не поможет ему здесь. – Charlie

ответ

2

Это не будет работать, потому что вы используете Hashtable, который не поддерживает INotifyPropertyChanged. Вместо привязки к хэш-таблице вы должны привязываться к ObservableCollection, которая будет обрабатывать все уведомления об изменениях для вас. Если поведение hashtable-like является обязательным, вы можете просто расширить ObservableCollection и переопределить методы InsertItem и SetItem. Вот пример этого:

public class SetCollection<T> : ObservableCollection<T> 
{ 
    protected override void InsertItem(int index, T item) 
    { 
     if (Contains(item)) 
     throw new ItemExistsException(item); 

     base.InsertItem(index, item); 
    } 

    protected override void SetItem(int index, T item) 
    { 
     int i = IndexOf(item); 
     if (i >= 0 && i != index) 
     throw new ItemExistsException(item); 

     base.SetItem(index, item); 
    } 
}