using Stylet; namespace Artemis.UI.Shared.DataModelVisualization { public abstract class DataModelDisplayViewModel : 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; } } /// /// For internal use only, implement instead. /// public abstract class DataModelDisplayViewModel : PropertyChangedBase { /// /// Prevents this type being implemented directly, implement instead. /// internal abstract void UpdateValue(object model); } }