using System; using System.Windows.Input; using Bricscad.ApplicationServices; using Prism.Ioc; using Prism.Services.Dialogs; using SWS.CAD.Views; using SWS.Commons; using Telerik.Windows.Controls; using Unity; namespace SWS.CAD.ViewModels.myViewModelBase { /// /// abstract 不同于接口,可以实现具体的代码 /// public abstract class DialogBase : ViewModelBase { public DialogBase() { _dialogService = GlobalObject._prismContainer.Resolve(); window_loaded = new DelegateCommand(onWindow_loaded); CloseCommand = new DelegateCommand(ExecuteCloseCommand); OKCommand = new DelegateCommand(ExecuteOKCommandAsync); if (GlobalObject.userInfo == null) { if (this is LoginViewModel) { } else if (this is ConfigViewModel) { } else { //都需要额外先登录 var loginView = GlobalObject.container.Resolve(); //Application.ShowModalDialog(Application.MainWindow,);// 用来显示WinForms对话框 Application.ShowModalWindow(Application.MainWindow.Handle, loginView);//用来显示WPF的对话框,任务栏里可以看到2个Windows } } if (GlobalObject.curProject == null) { if (this is LoginViewModel) { } else if (this is ConfigViewModel) { } else if (this is ProjectViewModel) { } else { //都需要额外先登录 var View = GlobalObject.container.Resolve(); //Application.ShowModalDialog(Application.MainWindow,);// 用来显示WinForms对话框 Application.ShowModalWindow(Application.MainWindow.Handle, View);//用来显示WPF的对话框,任务栏里可以看到2个Windows //if (GlobalObject.userInfo == null) //{ // CloseWindowAction?.Invoke();//依旧没登录上的话,放这里没用,因为这个时候,主体还没加载呢 //} } } } #region binding private bool _isbusy; public bool IsBusy { get { return _isbusy; } set { _isbusy = value; RaisePropertyChanged(nameof(IsBusy)); } } private string _BusyContent; public string BusyContent { get { return _BusyContent; } set { _BusyContent = value; RaisePropertyChanged(nameof(BusyContent)); } } /// /// 加载后 /// public ICommand window_loaded { get; } public ICommand CloseCommand { get; } public ICommand OKCommand { get; } private string _title; public string title { get { return _title; } set { _title = value; RaisePropertyChanged(nameof(title)); } } #endregion IUnityContainer _unityContainer; public readonly IDialogService _dialogService; /// /// CODE-BEHAND里设置为this.close以关闭。调用时,.invoke即可 /// public Action CloseWindowAction { get; set; } /// /// virtual 可以重写 /// /// public virtual void ExecuteCloseCommand(object parameter) { // 关闭窗口 (需要通过 CommandParameter 传入窗口实例) if (parameter is System.Windows.Window window) { window.Close(); } } public virtual void onWindow_loaded(object para) { } public virtual void ExecuteOKCommandAsync(object para) { } } }