using System.Diagnostics.CodeAnalysis; using Avalonia.Data; namespace Avalonia.PropertyStore { /// /// Stores a value with local value priority in a or /// . /// /// The property type. internal class LocalValueEntry : IValue { private T _value; public LocalValueEntry(T value) => _value = value; public BindingPriority Priority => BindingPriority.LocalValue; Optional IValue.GetValue() => new Optional(_value); public Optional GetValue(BindingPriority maxPriority) { return BindingPriority.LocalValue >= maxPriority ? _value : Optional.Empty; } public void SetValue(T value) => _value = value; public void Start() { } public void RaiseValueChanged( AvaloniaObject owner, AvaloniaProperty property, Optional oldValue, Optional newValue) { owner.ValueChanged(new AvaloniaPropertyChangedEventArgs( owner, (AvaloniaProperty)property, oldValue.Cast(), newValue.Cast(), BindingPriority.LocalValue)); } } }