Files
downkyicore/DownKyi/ViewModels/ViewModelBase.cs
2023-12-17 18:38:11 +08:00

64 lines
1.6 KiB
C#

using System;
using System.ComponentModel;
using Avalonia;
using Avalonia.Threading;
using Prism.Events;
using Prism.Mvvm;
using Prism.Regions;
using Prism.Services.Dialogs;
namespace DownKyi.ViewModels;
public class ViewModelBase : BindableBase, INavigationAware
{
protected readonly IEventAggregator? EventAggregator;
protected IDialogService? DialogService;
protected string ParentView = string.Empty;
public ViewModelBase(IEventAggregator eventAggregator)
{
EventAggregator = eventAggregator;
}
public ViewModelBase(IEventAggregator eventAggregator, IDialogService dialogService)
{
EventAggregator = eventAggregator;
DialogService = dialogService;
}
public virtual void OnNavigatedTo(NavigationContext navigationContext)
{
string viewName = navigationContext.Parameters.GetValue<string>("Parent");
if (viewName != null)
{
ParentView = viewName;
}
}
public bool IsNavigationTarget(NavigationContext navigationContext)
{
return true;
}
public virtual void OnNavigatedFrom(NavigationContext navigationContext)
{
}
/// <summary>
/// 异步修改绑定到UI的属性
/// </summary>
/// <param name="callback"></param>
protected void PropertyChangeAsync(Action callback)
{
Dispatcher.UIThread.InvokeAsync(callback);
}
/// <summary>
/// 同步修改绑定到UI的属性
/// </summary>
/// <param name="callback"></param>
protected void PropertyChange(Action callback)
{
Dispatcher.UIThread.Invoke(callback);
}
}