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

时间:2012-08-30 17:02:35

标签: c# wpf xaml data-binding combobox

我正在尝试理解Binding所以我想出了一个非常简单的程序来尝试测试它。

我的MainWindow中有以下元素:

<ComboBox Name="comboBox1" ItemsSource="{Binding ComboItems}" />

在我的代码中,我有以下可观察的集合:

private readonly ObservableCollection<string> comboItems = 
    new ObservableCollection<string>();
public ObservableCollection<string> ComboItems
{
    get {return comboItems; }
} 

只要组合框从一开始就在MainWindow XAML中,我就可以在运行时的任何时候以这种方式成功添加项目:

ComboItems.Clear();
ComboItems.Add("Item");

我的问题是,如果我从文件中加载它,如何更新此ComboBox?我有以下代码来保存和加载文件:

File.WriteAllText("ComboBox.xaml", saveComboBox)

这只是我保存的最后一行我有其他项目似乎对此讨论无关紧要。

ComboBox comboBox = System.Windows.Markup.Xamlreader.Load(stream) as ComboBox;

这样可以成功保存并加载我的组合框。 我现在遇到的问题是代码:

ComboItems.Clear();
ComboItems.Add("Item");

不再有效。我正在尝试为我将要做的新项目学习数据绑定。这个项目需要为用户界面加载xaml文件,我需要在加载后填充ComboBox。

解决此问题的最简单,最有效的解决方案是什么?

1 个答案:

答案 0 :(得分:1)

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