using System;
using Avalonia.Data;
using Avalonia.Threading;
#nullable enable
namespace Avalonia.PropertyStore
{
///
/// Represents an untyped interface to .
///
internal interface IBindingEntry : IBatchUpdate, IPriorityValueEntry, IDisposable
{
void Start(bool ignoreBatchUpdate);
}
///
/// Stores a binding in a or .
///
/// The property type.
internal class BindingEntry : IBindingEntry, IPriorityValueEntry, IObserver>
{
private readonly IAvaloniaObject _owner;
private IValueSink _sink;
private IDisposable? _subscription;
private bool _isSubscribed;
private bool _batchUpdate;
private Optional _value;
public BindingEntry(
IAvaloniaObject owner,
StyledPropertyBase property,
IObservable> source,
BindingPriority priority,
IValueSink sink)
{
_owner = owner;
Property = property;
Source = source;
Priority = priority;
_sink = sink;
}
public StyledPropertyBase Property { get; }
public BindingPriority Priority { get; private set; }
public IObservable> Source { get; }
Optional