Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF列表框,自动添加";新元素“;线_C#_Wpf_Mvvm_Listbox - Fatal编程技术网

C# WPF列表框,自动添加";新元素“;线

C# WPF列表框,自动添加";新元素“;线,c#,wpf,mvvm,listbox,C#,Wpf,Mvvm,Listbox,在我的控件中有一个列表框。每个ListBoxItem(通过ItemTemplate)显示为一个组合框,其ItemsSource是我控件的ViewModel中的一个可见集合 该组合框旁边是一个用于从列表中删除元素的按钮(该按钮的单击命令绑定到控件的ViewModel中的删除命令)。这可以很好地工作 现在我希望能够向列表框添加新元素。我知道如何通过单击ListBox外部或ListBox的ItemTemplate中的某个按钮来实现这一点,但是我想添加一些额外的“空”项作为我的ListBox的最后一项

在我的控件中有一个
列表框
。每个ListBoxItem(通过ItemTemplate)显示为一个组合框,其ItemsSource是我控件的ViewModel中的一个可见集合

该组合框旁边是一个用于从列表中删除元素的按钮(该按钮的单击命令绑定到控件的ViewModel中的删除命令)。这可以很好地工作

现在我希望能够向列表框添加新元素。我知道如何通过单击ListBox外部或ListBox的ItemTemplate中的某个按钮来实现这一点,但是我想添加一些额外的“空”项作为我的ListBox的最后一项

此“空”项应与任何其他项类似,但组合框没有选择项除外。一旦用户做出选择,就必须显示一个新的“空”项目。我希望你知道我的意思……实际上,当你在这里发布一个新问题时,它有点像“标签”编辑器;)


有什么想法吗???(在不违反MVVM规则的情况下)

使用带有
CanUserAddRows=“True”
DataGrid
而不是
列表框。它将添加“新行”行,并完全按照您想要的方式运行。

如果我理解正确,您似乎需要向模型中添加属性-isEmpty。这个属性应该绑定到ComboBox.Visible属性这很好(所以我将这个答案标记为“accepted”)。无论如何,我并不真的喜欢在这里使用DataGrid,DataGrid似乎是一个太强大的控件,无法解决像这样的小“问题”。其他保留原始ListBox(或者ListView)的解决方案仍然受欢迎。我尝试了一种“简单”的方法,通过使用
CompositeCollection
和事件处理来实现这一点,但结果非常糟糕,也不太MVVM。正确的方法是继承
列表框
并处理控件本身内部的所有逻辑(占位符项、选择和焦点更改等),但这不是一项简单的任务。