如何获取 WinUI 控件的父窗口?

Dav*_*own 6 c# windows winui winui-3

我需要获得对父级的Microsoft.UI.Xaml.Window引用Control。Project Reunion 0.5 有办法做到这一点吗?Window.Current不适用于桌面应用程序。

Mar*_*tin 1

我不知道如何获取对控件父级的引用。但是您可以做的是在类中静态引用您的根窗口App。然后您可以在您的项目中阅读代表 UI 层的此参考。

例子:

假设您使用此类作为顶级窗口:

/// <summary>
/// An empty window that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class YourWindowClass : Window
{
    public YourWindowClass()
    {
        this.InitializeComponent();
    }   
}
Run Code Online (Sandbox Code Playgroud)

然后你可以App像这样在你的类中实例化这个类(参见TopLevelWindow属性):

/// <summary>
/// Provides application-specific behavior to supplement the default Application class.
/// </summary>
public partial class App : Application
{    

    public App()
    {
        this.InitializeComponent();
    }    


    public static YourWindowClass TopLevelWindow { get; } = new YourWindowClass() { Title = "Window Title..." };


    protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args)
    {
        TopLevelWindow.Activate();
    }
} 
Run Code Online (Sandbox Code Playgroud)

要使用对顶级窗口的引用,您可以将其写入 UI 项目中的任何位置:

App.TopLevelWindow
Run Code Online (Sandbox Code Playgroud)