我无法使用Combobox
的SelectedItem
属性。已正确绑定和显示一个项目,但无法更改为另一个项目。如果尝试选择另一个项目,则项目列表将正确关闭,但是不会调用SelectedItem
(也不是setter或getter),并且所选项目不会更改。
我的XAML如下:
<ComboBox
ItemsSource="{Binding PasswordTypes}"
ItemTemplate="{StaticResource PasswordTypeTemplate}"
SelectedItem="{Binding SelectedPasswordType, Mode=TwoWay}"
/>
相关的ViewModel
代码:
public MyViewModel()
{
//these are the only two assignments in code of those two properties
_passwordTypes = new ObservableCollection<PasswordType>(nonEmptyList);
_selectedPasswordType = PasswordTypes.First();
}
private PasswordType _selectedPasswordType;
public PasswordType SelectedPasswordType
{
get => _selectedPasswordType;
set => Set(ref _selectedPasswordType, value);
}
private ObservableCollection<PasswordType> _passwordTypes;
public ObservableCollection<PasswordType> PasswordTypes
{
get => _passwordTypes;
set => Set(ref _passwordTypes, value);
}
以下是两个属性的调用:
- 源自
this.InitializeComponent()
的get PasswordTypes
- 源自
this.InitializeComponent()
的get SelectedPasswordType
- 将源自
this.InitializeComponent()
的set SelectedPasswordType
设置为null
- 将源自
this.InitializeComponent()
的set SelectedPasswordType
设置为PasswordType
实例,(_passwordTypes.Contains(value);
评估为true
) - 之后不会再调用这两个属性
ListView
替换ComboBox
,那么SelectedItem
就会被正确地设置。因此,安装正确。我需要为
ComboBox
设置其他属性才能使其工作,还是这是一个错误?