1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00
Artemis/src/Artemis.UI.Shared/DataModelVisualization/DataModelDisplayViewModel.cs
Robert 6ee06b2fc5 Data model visualization - Moved services and VMs to UI.Shared
Data model visualization - Added support for custom display VMs
Data model visualization - Added framework for custom input VMs
Shared UI - Made internal converters public
2020-07-02 20:25:20 +02:00

39 lines
1.1 KiB
C#

using Stylet;
namespace Artemis.UI.Shared.DataModelVisualization
{
public abstract class DataModelDisplayViewModel<T> : DataModelDisplayViewModel
{
private T _displayValue;
public T DisplayValue
{
get => _displayValue;
set
{
if (!SetAndNotify(ref _displayValue, value)) return;
OnDisplayValueUpdated();
}
}
protected virtual void OnDisplayValueUpdated()
{
}
internal override void UpdateValue(object model)
{
DisplayValue = model is T value ? value : default;
}
}
/// <summary>
/// For internal use only, implement <see cref="DataModelDisplayViewModel{T}" /> instead.
/// </summary>
public abstract class DataModelDisplayViewModel : PropertyChangedBase
{
/// <summary>
/// Prevents this type being implemented directly, implement <see cref="DataModelDisplayViewModel{T}" /> instead.
/// </summary>
internal abstract void UpdateValue(object model);
}
}