/// <summary> /// 注册对话框元素与ViewModel,注册后可调用CloseByViewModel通过ViewModel关闭所在窗口 /// </summary> /// <param name="content"></param> /// <param name="viewModel"></param> public static void RegisterClosingByViewModel(UIElement content, object viewModel) { if (viewModel == null || content == null) { throw new ArgumentNullException(); } ViewModelViewDict.Add(viewModel, content); }
/// <summary> /// 通过已注册的ViewModel关闭关联的ui所在对话框 /// </summary> /// <param name="viewModel"></param> public static void CloseByViewModel(object viewModel) { if (ViewModelViewDict.ContainsKey(viewModel)) { var window = Window.GetWindow(ViewModelViewDict[viewModel]); if (window != null) { window.Close(); } if (window?.IsActive != true) { if (window.Owner != null) { window.Owner.Activate(); } ViewModelViewDict.Remove(viewModel); } } }