Initial Commit
This commit is contained in:
60
PortfolioManager/ViewModels/ModelBase.cs
Normal file
60
PortfolioManager/ViewModels/ModelBase.cs
Normal file
@@ -0,0 +1,60 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Controls.ApplicationLifetimes;
|
||||
using Axiom.Utils;
|
||||
using Eremex.AvaloniaUI.Controls;
|
||||
|
||||
namespace PortfolioManager.ViewModels
|
||||
{
|
||||
|
||||
public abstract class ModelBase : INotifyPropertyChanged
|
||||
{
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
|
||||
|
||||
public Window GetTopLevelWindow()
|
||||
{
|
||||
Window currentWindow = default;
|
||||
if (Avalonia.Application.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
|
||||
{
|
||||
currentWindow = desktop.MainWindow;
|
||||
}
|
||||
return currentWindow;
|
||||
}
|
||||
|
||||
public virtual String DisplayName
|
||||
{
|
||||
get;
|
||||
protected set;
|
||||
}
|
||||
|
||||
protected virtual bool ThrowOnInvalidPropertyName
|
||||
{
|
||||
get;
|
||||
private set;
|
||||
}
|
||||
|
||||
protected virtual void OnPropertyChanged(string propertyName)
|
||||
{
|
||||
this.VerifyPropertyName(propertyName);
|
||||
PropertyChangedEventHandler handler = PropertyChanged;
|
||||
if (handler != null)
|
||||
{
|
||||
var e = new PropertyChangedEventArgs(propertyName);
|
||||
handler(this, e);
|
||||
}
|
||||
}
|
||||
|
||||
public void VerifyPropertyName(string propertyName)
|
||||
{
|
||||
if (TypeDescriptor.GetProperties(this)[propertyName] == null)
|
||||
{
|
||||
string message = "Invalid property name: " + propertyName;
|
||||
MDTrace.WriteLine(LogLevel.DEBUG, message);
|
||||
if (this.ThrowOnInvalidPropertyName) throw new Exception(message); else Debug.Fail(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user