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)
{
}
}
}