public object SelectedProduct => ProductList.SelectedItem;
- это краткая форма для
public object SelectedProduct
{
get
{
return ProductList.SelectedItem;
}
}
Это означает, что свойство с лямбда-выражением является свойством без установщика; это свойство только для чтения. SelectedItem
поля со списком может быть изменено пользователем, это означает, что пользователь может изменить значение свойства SelectedProduct
.
Чтобы исправить это, вы должны будете либо установить на установщик значение свойство или вам придется изменить привязку двумя одним способом:
<ComboBox ItemsSource="{Binding Products}" IsEnabled="{Binding ProductsIsEnabled}" SelectedItem="{Binding SelectedProduct, Mode=OneWay}" />
One-Way-Binding означает, что свойство остается неизменным, если пользователь изменяет его. Только если вы измените свойство, элемент пользовательского интерфейса изменится.
Приложение: После того, как я прочитал ваш комментарий: Ваше свойство ProductList.SelectedItem
может иметь геттер и сеттер, но из этого это не означает, что ваше свойство SelectedProduct
будет иметь сеттер и геттер. Измените его на
public object SelectedProduct
{
get
{
return ProductList.SelectedItem;
}
set
{
ProductList.SelectedItem = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(SelectedProduct)));
}
}
, и оно должно работать.