可编辑的WPFListBox我在WPF中有一个绑定到ListBox的ObservableCollection。我希望ListBox是可编辑的,并将编辑更改保存到集合中。由于WPF不提供可编辑的列表框,我尝试通过更改ListBox.ItemTemplate创建自己的列表框。更改ItemTemplate为我提供了可编辑框,但对文本框的任何更改都不会保存到ObservableCollection。有没有办法让可编辑的ListBox具有双向绑定?你不能那样做。要实现这个技巧,您需要将您的项目设置为一个“holder类”,它公开一个您可以将文本框绑定到的属性。要理解它,请想象以下调用的伪序列://这是你的模板加载的地方Template.Bind(item);//这是你的模板绑定的地方}}}你的模板(带有列表框的DataTemplate)被加载并且项目(我假设你的情况是一个字符串)被传入。此时,它只知道字符串,不能向上影响任何事情。双向绑定不会影响集合,因为模板不知道它在哪个上下文中使用,所以它无法返回到原始集合并修改其内容。就此而言,TextBox也是如此。如果没有给定变量和属性名称,则无法“保存”更改。这与将字符串传递给函数调用基本相同。该函数不能更改传入的字符串(忽略像按引用参数传递这样的技巧)。回到您的案例,您需要构建一个对象集合,这些对象公开包含需要编辑的值的属性:publicclassMyDataItem{stringData{get;然后您可以将ListBox绑定到这些项目的Assemble并修改您的数据模板:绑定到模型属性(即数据对象的属性)而不是绑定到视图属性(如内容)。例如://modelclasspublicclassWidget:INotifyPropertyChanged{publicstringDescription{...}}请注意,如果您的ItemsSource是一个ObservableCollection(因为没有要绑定的属性),这将不起作用。以上就是C#学习教程:可编辑的WPFListBox分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
