0

好的,这对我来说听起来微不足道,但我无法找到答案。我有一个 normal ComboBox,效果很好。

我想做的是添加一个element (作为 的最后一项drop-down list,它只不过是一个Add new label ; 选择此项目时,我想打开一个窗口,允许我定义element我正在添加的属性。

现在我有以下内容:

<ComboBox x:Name="myCombo"
    SelectedValue="{Binding Name, UpdateSourceTrigger=PropertyChanged}"
    ItemsSource="{Binding Definitions}" 
    SelectedValuePath="Name"
    DisplayMemberPath="Name"
    SelectionChanged="CheckToAdd" />

CheckToAdd功能是这样的:

private void CheckToAdd(object sender, SelectionChangedEventArgs e)
{
    if (((myViewModel)e.AddedItems[0]).Name.Value.Equals("Add new"))
    {
        AddNewItem(sender, null);
    }
}

我所做的是在我的里面有一个假人 ,其中有Add new as 。使用这种方法可以使一切正常,但它是丑陋的 IMO 因为问题只是一件事,所以我认为把.elementDefinitionsNameviewVM or the Model

有人有更好的主意吗?

4

3 回答 3

2

WPF没有与 ASP.NET 等效的AppendDataBoundItems东西。您可能可以通过修改 ControlTemplate 到达某个地方,或者您可以简化您当前的方法 tp 使其更具可读性。就像是:

private void CheckToAdd(object sender, SelectionChangedEventArgs e) {
    if (cbo.SelectedIndex == Definitions.Count()) {
        AddNewItem(sender, null);
    }
于 2013-01-10T12:28:01.253 回答
0

我想这确实属于对已接受答案的评论,但我没有足够的代表。

您能否详细说明:

  1. 如何确保elementname添加新”留在底部。
  2. 如何Collection在添加虚拟项目时将模型包装在 ViewModel 中。
于 2013-07-25T11:37:49.743 回答
-2

如果您遵循 wpf 中的绑定,您必须在集合中插入项目(此处为定义)并使此集合通知(使用 INotifyPropertyChanged)然后在插入新项目时自动更新您的 ComboBox 这不仅是一种方法,而且是最佳实践

请参阅以下链接,了解如何实现 INotifyPropertyChanged

http://wpftutorial.net/INotifyPropertyChanged.html

于 2013-01-10T12:21:02.570 回答