我正在尝试在业务应用程序中重复使用保存/加载机制。我有读/写的基础
ObservableCollection<>
至/自
xml
,使用属性描述类属性。这部分正在工作。我可以救一个
ObservableCollection
到
XML
,然后加载
XML格式
回到一个
ObservableCollection(可观察集合)
下次运行程序时。
这是我的问题。我有一个
ComboBox
谁的
ItemsSource.DataContext = ObservableCollection<Flag>;
当我运行程序时,它接受绑定,但
组合框
自身直到稍后才会填充自身。我想将SelectedItem设置为
ObservableCollection<Flag>
我从XML加载的。但是什么也没有发生,因为当程序执行它的启动方法时
Items.Count
残余
0
.我猜
组合框
在获得焦点之前不会填充自身。我该如何解决这个问题?我可以强制ComboBox自行填充吗?我试过了
cb_ARDAR_ARFlag.Items.Refresh();
XAML:
<ComboBox Name="cb_ARDAR_ARFlag"
ItemsSource="{Binding}"
SelectionChanged="cb_ARDAR_ARFlag_SelectionChanged">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Flag_Desc}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
相关代码:
public MainWindow()
{
InitializeComponent();
setDataBinding();
loadSavedData();
}
private void setDataBinding()
{
//Returns ObservableCollection<Flag>
cb_ARDAR_ARFlag.DataContext = Flag.getOCAvailableFlags();
}
private void loadSavedData()
{
//When it gets here the ItemCount is 0 so nothing happens.
//Refresh didn't help
cb_ARDAR_ARFlag.Items.Refresh();
Flag f = Enforcement_Save.loadOCARFlag().First();
cb_ARDAR_ARFlag.SelectedItem = f;
}
在这一点上,我仍然不确定最后的代码是否能够成功地识别出要选择的正确“flag”项,或者我是否会最终使用Linq。顺便说一下,这又引出了另一个问题。你能
Linq
到
ComboBox.Items
以某种方式