【问题标题】:How to update combo box item in wpf?如何更新 wpf 中的组合框项目?
【发布时间】:2018-06-01 23:50:22
【问题描述】:

我在 wpf 应用程序中有组合框。在组合框 selectionChanged 事件中,我在组合框中又添加了一项。我已将组合框与 wvvm 架构绑定。在 selectionchanged 时,我的列表已更新,但组合框项目未刷新。 我的xml代码如下:

<ComboBox Name="cmb"  SelectionChanged="cmb_SelectionChanged"
             ItemsSource="{Binding Source={StaticResource cmbList}}" 
             SelectedValue="{Binding Listvalue}" DisplayMemberPath="ItemName" SelectedValuePath="itemName" >                    
            </ComboBox>

我对 sectionChanged 使用了以下代码:

    private void cmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        DropDownItem newItemsValue = new DropDownItem { ID = 1, itemName = "newValue", strID = "newValue" };
        this.objcmbList.cmbList.Add(newItemsValue);          
        (FindResource("CmbList") as ObjectDataProvider).ObjectInstance = this;
        (FindResource("CmbList") as ObjectDataProvider).Refresh();
    }

这里我的列表已更新,但组合框未更新。 可能是错误是组合框正在使用中。 那么如何在选择更改事件时刷新我的组合框项目。

【问题讨论】:

  • 如果你想使用 MVVM 那么不要直接访问代码中的控件。您可以参考这个链接 - c-sharpcorner.com/article/explain-combo-box-binding-in-mvvm-wpf,它展示了如何使用 MVVM 设计模式进行绑定。
  • 我已经将组合框与 MVVM 绑定,它工作正常。我的列表在选择更改时更新但我面临刷新我所做的选择更改事件的组合框项目的问题。
  • 我不明白你在做什么。如果您使用的是 MVVM,那么为什么不直接更新绑定到组合框的原始集合?

标签: c# wpf combobox


【解决方案1】:

绑定到标准列表不会在 WPF 中自动更新。在您的视图模型中使用 ObservableCollection 而不是使用 List,例如:

Public ObservableCollection<string> cmbList = New ObservableCollection<string>()

然后在您的 XAML 中绑定到它:

<ComboBox Name="cmb"  SelectionChanged="cmb_SelectionChanged"
         ItemsSource="{Binding Path=cmbList}}" 
         SelectedValue="{Binding Listvalue}" DisplayMemberPath="ItemName" SelectedValuePath="itemName" >                    
        </ComboBox>

【讨论】:

  • 请更正您的 C# 代码中的大小写,以便编译。
  • 在选择更改时,我的列表已更新,但组合框项目未刷新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-01
  • 1970-01-01
  • 2017-11-14
  • 2017-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多