2025-10-17 16:45:00 +08:00

126 lines
4.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
{
/// <summary>
/// abstract 不同于接口,可以实现具体的代码
/// </summary>
public abstract class DialogBase : ViewModelBase
{
public DialogBase()
{
_dialogService = GlobalObject._prismContainer.Resolve<IDialogService>();
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<Login>();
//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<Project>();
//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)); }
}
/// <summary>
/// 加载后
/// </summary>
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;
/// <summary>
/// CODE-BEHAND里设置为this.close以关闭。调用时.invoke即可
/// </summary>
public Action CloseWindowAction { get; set; }
/// <summary>
/// virtual 可以重写
/// </summary>
/// <param name="parameter"></param>
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)
{
}
}
}