我正在嘗試一個保存/加載機制在業務應用程序中重用。我有基礎讀/ ObservableCollection<>
到/從xml
,使用屬性來描述我的類屬性。這部分工作。我可以將ObservableCollection
保存爲XML
,然後在下次運行程序時將XML
加載回ObservableCollection
。如果ComboBox綁定到ObservableCollection時何時收到它的項目?
這是我的問題。我有一個ComboBox
其0123¾ 當我運行該程序,它接受綁定就好了,但ComboBox
本身不填充自己,直到以後。我想將SelectedItem設置爲我從XML加載的ObservableCollection<Flag>
中的第一項。雖然沒有任何反應,因爲程序正在執行它的啓動方法,Items.Count
仍然爲0
。我猜ComboBox
不會自己填充,直到它獲得焦點。我如何解決這個問題?我可以強制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;
}
在這一點上,我仍然不知道在最後的代碼將成功地識別出正確的「標誌」要選擇的項目,或者如果我最終會使用Linq。順便提一句,這引出了另一個問題。莫名其妙地你可以Linq
到ComboBox.Items
嗎?
所有這些東西變成非問題,如果您使用綁定和一個視圖模型。 –