将难以置信的集合绑定到组合框 - 我做了研究

时间:2015-09-02 10:07:40

标签: c# wpf data-binding combobox

我有几个关于这个问题的线索,其中大多数提供了一个答案。然而,它对我不起作用。 Combobox仍然不想向我展示数据。

我想将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"
                  />

视图模型:

(...) 
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"
                      />

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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