如何将 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
派生的,所以你可能也想解决这个问题。
我被这个问题困住了,即使在阅读了很多主题之后我也能找到答案。
这里我尝试使用 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
派生的,所以你可能也想解决这个问题。