首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Avalonia获得所有Windows

Avalonia获得所有Windows
EN

Stack Overflow用户
提问于 2021-12-06 19:44:32
回答 2查看 794关注 0票数 2

有没有办法得到Avalonia所有窗口的列表?

这在WPF中的等效值。

代码语言:javascript
复制
Application.Current.Windows

我的要求是根据它的DataContext激活或关闭某个窗口。

如果我无法访问这样的列表;是否有方法跟踪窗口的创建和销毁来创建内部列表?

EN

回答 2

Stack Overflow用户

发布于 2021-12-06 20:11:10

可以使用一个WindowsManagerClass属性创建static,其类型为List<Window>,如下所示

代码语言:javascript
复制
 public class WindowsManager
    {
        public static List<Window> AllWindows = new List<Window>();
    }

并在表单构造函数中像下面的代码一样添加到AllWindows中

代码语言:javascript
复制
 public MainWindow()
        {
            InitializeComponent();
            WindowsManager.AllWindows.Add(this);
        }

在您需要的地方,您可以像这样访问引用

代码语言:javascript
复制
var allwindows = WindowsManager.AllWindows;

            var selectedWindows = allwindows.FirstOrDefault(x => x.Name == "Test");
            if (selectedWindows != null)
            {
                if (selectedWindows.IsActive)
                {
                    selectedWindows.Close();
                }
            }

完整的表单代码(在本例中,单击按钮窗体将关闭)

代码语言:javascript
复制
public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            WindowsManager.AllWindows.Add(this);
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            var allwindows = WindowsManager.AllWindows;

            var selectedWindows = allwindows.FirstOrDefault(x => x.Name == "");
            if (selectedWindows != null)
            {
                if (selectedWindows.IsActive)
                {
                    selectedWindows.Close();
                }
            }
        }
    }
票数 1
EN

Stack Overflow用户

发布于 2021-12-07 09:32:20

您需要IClassicDesktopStyleApplicationLifetime::Windows属性。生存期可从ApplicationApplicationLifetime属性中获得。

例如。

代码语言:javascript
复制
((IClassicDesktopStyleApplicationLifetime)Application.Current.ApplicationLifetime).Windows

请注意,它不适用于Mobile、WebAssembly和Linux缓冲区平台。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70251082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档