Это самый чистый пример, который я могу привести.
У меня есть простой ComboBox:
<ComboBox ItemsSource="{Binding ItemsSource}" SelectedItem="{Binding SelectedItem, Mode=OneWay}"/>
Это CodeBehind:
public partial class MainPage : UserControl, INotifyPropertyChanged
{
private List<string> m_ItemsSource;
public List<string> ItemsSource
{
get
{
return m_ItemsSource;
}
set
{
m_ItemsSource = value;
PropertyChanged(this, new PropertyChangedEventArgs("ItemsSource"));
}
}
private string m_SelectedItem;
public string SelectedItem
{
get
{
return m_SelectedItem;
}
set
{
m_SelectedItem = value;
PropertyChanged(this, new PropertyChangedEventArgs("SelectedItem"));
}
}
public MainPage()
{
InitializeComponent();
DataContext = this;
ItemsSource = new List<string>()
{
"Value A",
"Value B"
};
}
private void button1_Click(object sender, RoutedEventArgs e)
{
SelectedItem = "Value A";
}
private void button2_Click(object sender, RoutedEventArgs e)
{
SelectedItem = "Value B";
}
public event PropertyChangedEventHandler PropertyChanged;
}
По какой-то причине SelectedItem в ComboBox корректно обновляется при первом нажатии кнопки, но затем перестает отвечать.
Но как ни странно, при переключении на Mode = TwoWay все работает.
Мне особенно нужна привязка OneWay, и я не хочу, чтобы ComboBox изменял это свойство.
Это известная ошибка или какое-то странное дизайнерское решение?