如何将 ObservableCollection 绑定到 WPF 中的组合框?

How to bind an ObservableCollection to a combobox in WPF?

我被这个问题困住了,即使在阅读了很多主题之后我也能找到答案。

这里我尝试使用 MVVM 模式将可观察集合绑定到 WPF 中的组合框:

Scenario.cs

{
    public class Scenario
    {
        public string name { get; set; }
        public string codeClient { get; set; }
        public string codeAppli { get; set; }
        public string infoComplementaire { get; set; }
    }
}

scenarioVM.cs

    {
        public ObservableCollection<Scenario> Scenarios { get; set; }
    }

MainWindows.xaml

<ComboBox x:Name="cbScenario" ItemsSource="{Binding Scenarios}" DisplayMemberPath="{Binding Path=Name}" HorizontalAlignment="Left" Margin="407,8,0,0" VerticalAlignment="Top" Width="226" BorderBrush="#FF1585B5" Height="26"/>

感谢您的帮助:)

如果您将 DataContext 设置为 this,如果它属于您的 ScenarioVM 而不是您的 Window,您当然找不到 Scenarios . DataContext 是任何绑定的根。

一开始你可以这样做。

public ScenarioVM VM {get; private set;}

public MainWindow() 
{ 
    VM = new ScenarioVM();
    InitializeComponent(); 
    DataContext = VM; 
    this.Loaded += MetroWindow_Loaded; 

    VM.Scenarios.Add(new Scenario());
} 

现在您的 window 拥有一个 ScenarioVM 实例。不一定是好的设计,而是一个开始。

你迟早会 运行 遇到麻烦,因为你的场景不是从 INotifyPropertyChanged 派生的,所以你可能也想解决这个问题。