【问题标题】:Enable editing ListBox items in WPF在 WPF 中启用编辑 ListBox 项
【发布时间】:2012-04-19 13:31:31
【问题描述】:

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

它使用以下模板显示列表框项目:

      <Setter Property="ItemTemplate">
            <Setter.Value>
              <DataTemplate>
                <local:TagControl Text="{Binding Path=., Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Remove="RemoveItem" />
              </DataTemplate>
            </Setter.Value>
        </Setter>

我注意到,当我更新 TagControl 的文本时,ListBox 中的原始项目没有得到更新。我使用ObservableCollection&lt;string&gt; 作为项目来源。

TagControl 实现 INotifyPropertyChanged 并调用事件。

我做错了什么?

【问题讨论】:

  • 设置 TagControl 的文本后是否触发 PropertyChanged 事件?
  • 你实际上想绑定什么 - 这还不够代码。
  • @Miklos:是的,我正在解雇 PropertyChanged。
  • @NSGaga:你想看代码的哪一部分?
  • 相关位 - 您的视图模型、TagControl - 能够查看事物如何从 XAML 流向 MVVM 并返回

标签: c# wpf xaml listview data-binding


【解决方案1】:

我已经重现了您的问题,可以提供解决方案。 ObservableCollection&lt;string&gt; 是使用只读的 IEnumerable 枚举的。

如果您将ObservableCollection&lt;string&gt; 替换为ObservableCollection&lt;DataItem&gt; where

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2011-07-09
    • 1970-01-01
    • 2019-10-16
    • 2014-09-23
    • 1970-01-01
    相关资源
    最近更新 更多