我想在模型对象上创建带有 ItemsSource和SelectedItem绑定的列表框。
绑定完成如下:
let passwordRegex = "^(?=.*\\p{L})(?=.*\\d)[\\p{L}\\d]{8,}$"
在第一次加载时,使用默认的注册数据选择值。
切换/重新加载当前viewModel UI后出现问题。 当我回到ViewModel时,SelectItem为null。
这些值似乎在离开UI时(在卸载时)更新。 当我使用延迟(> 0)属性或将 UpdateSourceTrigger设置为LostFocus
时问题消失我在Github =>上创建了例证我的问题here (例如,您必须继续“管理技能”窗口并切换到“管理项目”以最终返回技能)
我认为UI线程在控件卸载或销毁时调用事件propertyChanged ...但我真的不知道如何避免这个问题。
非常感谢你的帮助。
答案 0 :(得分:0)
在您粘贴的代码中,每次单击按钮时都会创建viewmodel的新实例,这意味着将刷新现有值。 UI的情况也是如此。
switch (targetViewModel)
{
case "1":
CurrentViewModel = new ProjectViewModel();
break;
case "2":
CurrentViewModel = new ManageSkillsViewModel();
break;
default:
CurrentViewModel = null;
break;
}
这是我正在讨论的部分。相反,我觉得您不需要创建这样的实例,如果您需要加载新VM,您可以尝试清除现有值。