// Copyright (c) The Perspex Project. All rights reserved.
// Licensed under the MIT license. See licence.md file in the project root for full license information.
using System;
using Perspex.Controls.Templates;
using Perspex.Input;
using Perspex.Layout;
using Perspex.Styling;
namespace Perspex.Controls
{
///
/// Interface for Perspex controls.
///
public interface IControl : IVisual, ILogical, ILayoutable, IInputElement, INamed, IStyleable, IStyleHost
{
///
/// Raised when the control is attached to a rooted logical tree.
///
event EventHandler AttachedToLogicalTree;
///
/// Raised when the control is detached from a rooted logical tree.
///
event EventHandler DetachedFromLogicalTree;
///
/// Gets or sets the control's styling classes.
///
new Classes Classes { get; set; }
///
/// Gets or sets the control's data context.
///
object DataContext { get; set; }
///
/// Gets the data templates for the control.
///
DataTemplates DataTemplates { get; }
///
/// Gets the control's logical parent.
///
IControl Parent { get; }
}
}