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

lvjbypge  于 2023-02-20  发布在  Windows
关注(0)|答案(2)|浏览(221)

我需要获取Control的父级Microsoft.UI.Xaml.Window的引用。在Project Reunion 0.5中是否可以实现此操作?Window.Current在桌面应用中不起作用。

qxgroojn

qxgroojn1#

我不知道如何获得对控件父级的引用。但是你可以做的是在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();
    }   
}

然后,您可以在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();
    }
}

要使用对顶层窗口的引用,您可以在UI项目中的任何位置编写以下代码:

App.TopLevelWindow
pod7payv

pod7payv2#

你可以用
可视化树帮助程序
过度使用此类可能会降低性能,但如果您需要获取应用中任何控件窗口的引用,则该类应能很好地工作。例如:
递归地执行此命令,直到
类型==窗口

(VisualTreeHelper.GetParent((FrameworkElement)myUserControl))

相关问题