我正在使用 WPF 中的 ListView,它绑定了一个可观察的集合。然后我将 SelectedItem-Property 绑定到 ViewModel 的一个属性。
- 当我通过 GUI 在 ListView 中选择一个项目时,“SelectedItem”发生了变化。
- 当我在 ViewModel 中更改“SelectedItem”时,ListView 仅在我将 SelectedItem 设置为 NULL 时更改。
- 当我设置任何其他(有效!)对象(如 ObservableCollection 的第一个条目)时,ListView 会忽略它。
此外:当我想“否决”一个 SelectedItem 更改(因为未保存数据)时,ListView 会突出显示新的选定项,而不是 ViewModel 的 SelectedItem-Property。
我已经尝试将绑定更改为Mode=TwoWay
- 效果不佳(否则对 SelectedItem 的“NULL”更改将无法正常工作)
这是视图中的代码:
<ListView ItemsSource="{Binding Configurations}" SelectedItem="{Binding SelectedUserConfiguration}" SelectionMode="Single">
<ListView.View>
<GridView>
<GridViewColumn Header="User Configuration" DisplayMemberBinding="{Binding ConfigurationName}" Width="200" />
</GridView>
</ListView.View>
</ListView>
我的视图模型:
public ObservableCollection<UserConfigurationViewModel> Configurations { get; private set; }
private UserConfigurationViewModel _selectedUserConfiguration;
public UserConfigurationViewModel SelectedUserConfiguration
{
get {
return this._selectedUserConfiguration;
}
set
{
if (this._selectedUserConfiguration != null && this._selectedUserConfiguration.WasChanged)
{
if (ask-user)
{
this._selectedUserConfiguration.Reset();
this._selectedUserConfiguration = value;
}
}
else
{
this._selectedUserConfiguration = value;
}
NotifyOfPropertyChange(() => this.SelectedUserConfiguration);
}
}