Я начинаю с WPF и связывания, но есть странное поведение, которое я не понимаю.
Пример 1:
Очень простая форма WPF, с одним списком (имя = C) и следующим кодом в конструкторе:
public Window1()
{
InitializeComponent();
BindingClass ToBind = new BindingClass();
ToBind.MyCollection = new List<string>() { "1", "2", "3" };
this.DataContext = ToBind;
//c is the name of a combobox with the following code :
//<ComboBox Name="c" SelectedIndex="0" ItemsSource="{Binding Path=MyCollection}" />
MessageBox.Show(this.c.SelectedItem.ToString());
}
Можете ли вы объяснить мне, почему это может произойти сбой из-за this.c.SelectedItem, как NULL.
Итак, я думаю ... нет проблем, потому что это в конструкторе, давайте поместим код в событие Loaded формы:
public Window1()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
BindingClass ToBind = new BindingClass();
ToBind.MyCollection = new List<string>() { "1", "2", "3" };
this.DataContext = ToBind;
MessageBox.Show(this.c.SelectedItem.ToString());
}
Та же проблема this.c.SelectedItem is null ...
Примечание: если я уберу вещь Messagebox, то привязка будет работать нормально, у меня есть значение в выпадающем списке. Это как если бы "некоторое" время потребовалось после установки datacontext. Но как узнать, когда будет сделано связывание?
Спасибо за помощь.