2012-04-19 81 views
0

我在写一个基于列表框的标签控件。启用编辑WPF中的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

您是否在设置TagControl的文本后触发PropertyChanged事件? – 2012-04-19 13:46:53

+0

你真正试图绑定什么 - 这不是足够的代码。 – NSGaga 2012-04-19 13:48:38

+0

@Miklos:是的,我发射了PropertyChanged。 – 2012-04-19 14:56:24

回答

1

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

如果更换ObservableCollection<string>ObservableCollection<DataItem>其中

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

,然后绑定到名称在您DataTemplate中,列举的DataItem是只读的,但Name属性是可读写的,将被当你更新编辑列表项中的文本。