将可观察集合绑定到组合框-我做了研究

本文关键字:组合 观察 集合 绑定 | 更新日期: 2023-09-27 18:11:00

我有几个关于这个问题的帖子,大多数都提供了一个答案。然而,这对我不起作用。组合框仍然不想显示数据。

我想绑定ObservableCollection到组合框。

DropDownElement就是

 class DropDownElement
{
    public string Key { get; set; }
    public string Value { get; set; }

    public DropDownElement() { }
    public DropDownElement(string key, string value)
    {
        this.Key = key;
        this.Value = value;
    }
}
XAML:

<ComboBox Name="cbStage" 
                  Style="{StaticResource ComboBoxStyle}"
                  ItemsSource="{Binding Path=v_stage}"
                  DisplayMemberPath="Value"
                  SelectedValuePath="Key"
                  />

ViewModel:

(...) 
class PacksViewModel : INotifyPropertyChanged
     {
      public ObservableCollection<DropDownElement> v_stage = new ObservableCollection<DropDownElement>();
 (..)

主窗口

public partial class MainWindow : Window
    {
        PacksViewModel dc = new PacksViewModel();
        public MainWindow()
        {
            InitializeComponent();             
            dc.stagesFill(); // method that fills v_stage with data from DB
            this.DataContext = dc;
        }

我做错了什么?

以前我是这样工作的,但现在我想做正确的方式

public MainWindow()
        {
            InitializeComponent();
            cbStage.DataContext = dc.stagesFill(); // in that case method fills collection with data and returns v_stage
    }
<ComboBox Name="cbStage" 
                      Style="{StaticResource ComboBoxStyle}"
                      ItemsSource="{Binding}"
                      DisplayMemberPath="Value"
                      SelectedValuePath="Key"
                      />

任何想法?

将可观察集合绑定到组合框-我做了研究

v_stage必须是一个依赖属性或一个实现INotifyPropertyChanged的属性