0

我正在编写一个基于列表框的标签控件。

它使用以下模板显示 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 并调用事件。

我究竟做错了什么?

4

1 回答 1

1

我已经重现了您的问题并可以提供解决方案。ObservableCollection<string>使用只读的 IEnumerable 枚举。

如果你ObservableCollection<string>ObservableCollection<DataItem>where替换

public class DataItem
{
    public string Name{get;set;} 
}

然后绑定到你的DataTemplate中的Name,枚举出来的DataItem是只读的,但是Name属性是读写的,当你编辑列表项中的文本时会更新。

于 2012-04-19T16:46:52.090 回答