顶级控件
顶级控件充当视觉根,并且是所有顶级控件(例如Window
)的基类。它处理布局、样式和渲染的调度,以及跟踪客户端大小。大多数服务都通过顶级控件访问。
获取顶级控件
以下是两种常见的访问顶级控件实例的方法。
使用TopLevel.GetTopLevel
您可以使用TopLevel类的静态GetTopLevel
方法获取包含当前控件的顶级控件。
var topLevel = TopLevel.GetTopLevel(control);
// 在此处,您可以从topLevel实例引用各种服务,如Clipboard或StorageProvider。
如果您在用户控件或较低级别的组件中工作并且需要访问顶级控件的服务,此方法可能会有所帮助。
备注
如果TopLevel.GetTopLevel
返回null,则可能控件尚未附加到根。为确保控件已附加,您应该处理Control.Loaded
和Control.Unloaded
事件,并从这些事件中跟踪当前顶级控件。
使用Window类
由于Window
类继承自TopLevel
,因此您可以直接从Window
实例访问服务:
var topLevel = window;
当您已经在窗口的上下文中工作时,例如在ViewModel或Window
类中的事件处理程序中,通常会使用此方法。
常见属性
ActualTransparencyLevel
获取平台能够提供的实际WindowTransparencyLevel
。
WindowTransparencyLevel ActualTransparencyLevel { get; }
ClientSize
获取窗口的客户端大小。
Size ClientSize { get; }
Clipboard
获取平台的Clipboard实现。
IClipboard? Clipboard { get; }
FocusManager
获取根的焦点管理器。
IFocusManager? FocusManager { get; }
FrameSize
获取顶级控件的总大小,包括系统框架(如果有)。
Size? FrameSize { get; }
InsetsManager
获取平台的InsetsManager实现。
IInsetsManager? InsetsManager { get; }
PlatformSettings
表示访问顶级平台特定设置的契约。
IPlatformSettings? PlatformSettings { get; }