| 123456789101112131415161718192021222324252627282930313233 |
- using System;
- namespace Avalonia.Data.Core
- {
- public abstract class SettableNode : ExpressionNode
- {
- public bool SetTargetValue(object value, BindingPriority priority)
- {
- if (ShouldNotSet(value))
- {
- return true;
- }
- return SetTargetValueCore(value, priority);
- }
- private bool ShouldNotSet(object value)
- {
- if (PropertyType == null)
- {
- return false;
- }
- if (PropertyType.IsValueType)
- {
- return LastValue?.Target != null && LastValue.Target.Equals(value);
- }
- return LastValue != null && Object.ReferenceEquals(LastValue?.Target, value);
- }
- protected abstract bool SetTargetValueCore(object value, BindingPriority priority);
- public abstract Type PropertyType { get; }
- }
- }
|