/ / Jak ustawić ComboBox DataContext załadowany z pliku w XAML? - c #, wpf, xaml, wiązanie danych, combobox

Jak ustawić ComboBox DataContext załadowany z pliku w XAML? - c #, wpf, xaml, wiązanie danych, combobox

Próbuję zrozumieć Binding, więc wymyśliłem bardzo prosty program próbujący go przetestować.

Mam następujący element w moim MainWindow:

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

W moim Kodzie mam następujące obserwowalne kolekcje:

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

Mogę z powodzeniem dodawać elementy w ten sposób w dowolnym momencie podczas wykonywania, o ile combobox był od samego początku w MainWindow XAML:

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

Moje pytanie brzmi: jak mogę zaktualizować ComboBox, jeśli załaduję go z pliku? Mam następujący kod, aby zapisać i załadować plik:

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

To jest tylko ostatnia linia w moim sejfie. Mam inne przedmioty, które nie mają znaczenia dla tej dyskusji.

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

To oszczędza i ładuje mój combobox z powodzeniem. Problem, który napotykam teraz, polega na tym, że kod:

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

Nie działa. Jestem w trakcie próby poznania powiązania danych dla nowego projektu, który będę robić. Ten projekt będzie wymagał załadowania plików xaml dla interfejsu użytkownika i muszę wypełnić ComboBox po jego załadowaniu.

Jakie jest najprostsze i najbardziej efektywne rozwiązanie tego problemu?

Odpowiedzi:

1 dla odpowiedzi № 1

Nie wiem, czy XamlReader zachowa nawet wiązania, przeczyta dokumentację, ma ograniczenia. I tak nie polecałbym tego robić. Jeśli wiązanie zniknęło mógłby utwórz nowy w kodzie, częściowo pokonuje cel jego zapisania.