我正在编写一个基于列表框的标记控件。
它使用以下模板显示ListBox项目:
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<local:TagControl Text="{Binding Path=., Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Remove="RemoveItem" />
</DataTemplate>
</Setter.Value>
</Setter>
我注意到当我更新TagControl的文本时,ListBox中的原始项目不会更新。我正在使用ObservableCollection<string>
作为项目来源。
TagControl实现INotifyPropertyChanged并调用事件。
我做错了什么?
答案 0 :(得分:1)
我已经复制了您的问题,可以提供解决方案。使用IEnumerable枚举ObservableCollection<string>
,它是只读的。
如果您将ObservableCollection<string>
替换为ObservableCollection<DataItem>
其中
public class DataItem
{
public string Name{get;set;}
}
然后绑定到DataTemplate中的Name,枚举的DataItem是只读的,但Name属性是读写的,并且在编辑列表项中的文本时将更新。