在视图模型构造函数中设置时未显示在视图中的选定项

本文关键字:视图 显示 模型 构造函数 设置 | 更新日期: 2023-09-27 18:32:12

在我的 WPF MVVM 应用程序中,我尝试在视图首次加载时显示所选项目。在视图模型的构造函数中设置选定项时,这些项不会在视图中显示为选定项。但是,当用户单击按钮后执行相同的代码时,这些项将显示为选定项。

我的观点,与SelectedCustomVariableGroups绑定.

<ListBox DockPanel.Dock="Bottom" ItemsSource="{Binding CustomVariableGroups}" DisplayMemberPath="Name"                     
    ff:MultiSelectorBehaviours.SynchronizedSelectedItems="{Binding SelectedCustomVariableGroups}"
    SelectionMode="Extended" Height="auto">
</ListBox>

我的视图模型的构造函数,设置所选项:

public CustomVariableGroupSelectorViewModel()
{
    Initialize();
    var selectedCvg = this.CustomVariableGroups.FirstOrDefault(x => x.Name == "Unit RAF44");
    this.SelectedCustomVariableGroups.Add(selectedCvg);  // SelectedCustomVariableGroups is an ObservableCollection
}

"选定自定义变量组"的监视窗口显示计数为 1,但视图中未选择所选项。

现在,Cancel() 方法中的相同代码,就像测试一样(用户通过单击启动):

private void Cancel()
{
    var selectedCvg = this.CustomVariableGroups.FirstOrDefault(x => x.Name == "Unit RAF44");
    this.SelectedCustomVariableGroups.Add(selectedCvg);
}

当我在此方法中的第一个大括号上调试中断时,这个。SelectedCustomVariableGroups.Count 从 1 更改为 0。为什么?我没有看到任何地方我导致这种情况发生。Cancel() 方法完成后,计数再次恢复为 1,现在所选项目在视图中正确显示。

为什么这不起作用?如果我无法在构造函数中设置所选项,如何在视图/视图模型加载时设置所选项?

在视图模型构造函数中设置时未显示在视图中的选定项

尝试使用 SelectedItems 绑定设置 Mode 属性 ="TwoWay"