为什么Listbox SelectedItem返回null值?

时间:2018-04-27 08:35:40

标签: c# wpf

我想在模型对象上创建带有 ItemsSource和SelectedItem绑定的列表框。

绑定完成如下:

let passwordRegex = "^(?=.*\\p{L})(?=.*\\d)[\\p{L}\\d]{8,}$"

在第一次加载时,使用默认的注册数据选择值。

切换/重新加载当前viewModel UI后出现问题。 当我回到ViewModel时,SelectItem为null。

这些值似乎在离开UI时(在卸载时)更新。 当我使用延迟(> 0)属性或将 UpdateSourceTrigger设置为LostFocus

时问题消失

我在Github =>上创建了例证我的问题here (例如,您必须继续“管理技能”窗口并切换到“管理项目”以最终返回技能)

我认为UI线程在控件卸载或销毁时调用事件propertyChanged ...但我真的不知道如何避免这个问题。

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

在您粘贴的代码中,每次单击按钮时都会创建viewmodel的新实例,这意味着将刷新现有值。 UI的情况也是如此。

switch (targetViewModel)
            {
                case "1":
                    CurrentViewModel = new ProjectViewModel();
                    break;
                case "2":
                    CurrentViewModel = new ManageSkillsViewModel();
                    break;
                default:
                    CurrentViewModel = null;
                    break;
            }

这是我正在讨论的部分。相反,我觉得您不需要创建这样的实例,如果您需要加载新VM,您可以尝试清除现有值。