启用在WPF中编辑ListBox项

时间:2012-04-19 13:31:32

标签: c# wpf xaml listview data-binding

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

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

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我已经复制了您的问题,可以提供解决方案。使用IEnumerable枚举ObservableCollection<string>,它是只读的。

如果您将ObservableCollection<string>替换为ObservableCollection<DataItem>其中

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

然后绑定到DataTemplate中的Name,枚举的DataItem是只读的,但Name属性是读写的,并且在编辑列表项中的文本时将更新。