// Copyright (c) The Avalonia Project. All rights reserved.
// Licensed under the MIT license. See licence.md file in the project root for full license information.
using System;
using Avalonia.Data;
namespace Avalonia
{
///
/// Interface for getting/setting values on an object.
///
public interface IAvaloniaObject
{
///
/// Raised when a value changes on this object.
///
event EventHandler PropertyChanged;
///
/// Raised when an inheritable value changes on this object.
///
event EventHandler InheritablePropertyChanged;
///
/// Gets a value.
///
/// The property.
/// The value.
object GetValue(AvaloniaProperty property);
///
/// Gets a value.
///
/// The type of the property.
/// The property.
/// The value.
T GetValue(AvaloniaProperty property);
///
/// Checks whether a is animating.
///
/// The property.
/// True if the property is animating, otherwise false.
bool IsAnimating(AvaloniaProperty property);
///
/// Checks whether a is set on this object.
///
/// The property.
/// True if the property is set, otherwise false.
bool IsSet(AvaloniaProperty property);
///
/// Sets a value.
///
/// The property.
/// The value.
/// The priority of the value.
void SetValue(
AvaloniaProperty property,
object value,
BindingPriority priority = BindingPriority.LocalValue);
///
/// Sets a value.
///
/// The type of the property.
/// The property.
/// The value.
/// The priority of the value.
void SetValue(
AvaloniaProperty property,
T value,
BindingPriority priority = BindingPriority.LocalValue);
///
/// Binds a to an observable.
///
/// The property.
/// The observable.
/// The priority of the binding.
///
/// A disposable which can be used to terminate the binding.
///
IDisposable Bind(
AvaloniaProperty property,
IObservable