我从datatemplate中绑定到哈希表的值,并且值显示正常,但是当我在文本框中进行更改时,更改不会持久保存到对象。知道为什么会这样吗?
<DataTemplate x:Key="ResponseItemTemplate">
<StackPanel Orientation="Horizontal" >
<TextBox Width="200" Text="{Binding Path=Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>
</DataTemplate>
感谢您的时间
答案 0 :(得分:2)
这不起作用,因为您使用的是Hashtable,它不支持INotifyPropertyChanged。您应该绑定到ObservableCollection,而不是绑定到哈希表,ObservableCollection将为您处理所有更改通知。如果必须使用类似哈希表的行为,则可以简单地扩展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);
}
}