C# 如何在XAML中设置从文件加载的ComboBox DataContext?

C# 如何在XAML中设置从文件加载的ComboBox DataContext?,c#,wpf,xaml,data-binding,combobox,C#,Wpf,Xaml,Data Binding,Combobox,我试图理解绑定,所以我提出了一个非常简单的程序来尝试和测试它 我的主窗口中有以下元素: <ComboBox Name="comboBox1" ItemsSource="{Binding ComboItems}" /> 我的问题是,如果我从一个文件加载这个组合框,如何更新它?我有以下代码来保存和加载文件: File.WriteAllText("ComboBox.xaml", saveComboBox) 这只是我保存中的最后一行。我还有其他项目,这些项目似乎与本次讨论无关 Combo

我试图理解绑定,所以我提出了一个非常简单的程序来尝试和测试它

我的主窗口中有以下元素:

<ComboBox Name="comboBox1" ItemsSource="{Binding ComboItems}" />
我的问题是,如果我从一个文件加载这个组合框,如何更新它?我有以下代码来保存和加载文件:

File.WriteAllText("ComboBox.xaml", saveComboBox)
这只是我保存中的最后一行。我还有其他项目,这些项目似乎与本次讨论无关

ComboBox comboBox = System.Windows.Markup.Xamlreader.Load(stream) as ComboBox;
这将成功保存并加载我的组合框。 我现在遇到的问题是代码:

ComboItems.Clear();
ComboItems.Add("Item");
不再有效。我正在尝试为我将要做的一个新项目学习数据绑定。这个项目将需要加载用户界面的xaml文件,我需要在加载后填充组合框


这个问题最简单、最有效的解决方案是什么

我不知道
XamlReader
是否会保留绑定,阅读文档,它有局限性。无论如何,我不建议这样做。如果绑定消失了,您可以在代码中创建一个新的绑定,当然这部分违背了保存它的目的。

我不知道
XamlReader
是否会保留绑定,请阅读文档,它有局限性。无论如何,我不建议这样做。如果绑定消失了,您可以在代码中创建一个新的绑定,当然这部分违背了保存它的目的。

您的集合代码有点可怕,所以我更改了它,字段通常不应该是公共的,如果您有setter实现的话。(也请不要说“你好”和“谢谢”)谢谢你纠正我的错误。我只在WPF上工作了几个月,我一直在自学。你的集合代码有点可怕,所以我修改了它,字段通常不应该是公共的,如果你有一个setter实现的话。(也请不要说“你好”和“谢谢”)谢谢你纠正我的错误。我只在WPF上工作了几个月,我一直在自学。对不起。我应该说得更具体些。组合框显示在我的窗口中,因为我调用MainGrid.Children.Add(cmbBox)。但是,下拉列表中没有项目。@B-Rad:我不知道XamlReader是否会保留绑定,请阅读文档,它有一些限制。无论如何,我不建议这样做。如果绑定消失了,你可以在代码中创建一个新的绑定,当然这部分违背了保存它的目的。!我会看一看,看看装订是否被保留下来。这很可能就是问题所在。我刚刚查看了保存的XAML,似乎您是对的。绑定未保留。抱歉。我应该说得更具体些。组合框显示在我的窗口中,因为我调用MainGrid.Children.Add(cmbBox)。但是,下拉列表中没有项目。@B-Rad:我不知道XamlReader是否会保留绑定,请阅读文档,它有一些限制。无论如何,我不建议这样做。如果绑定消失了,你可以在代码中创建一个新的绑定,当然这部分违背了保存它的目的。!我会看一看,看看装订是否被保留下来。这很可能就是问题所在。我刚刚查看了保存的XAML,似乎您是对的。绑定不被保留。
ComboBox comboBox = System.Windows.Markup.Xamlreader.Load(stream) as ComboBox;
ComboItems.Clear();
ComboItems.Add("Item");