gpt4 book ai didi

wpf - 如何使我的 WPF MainWindow 成为单例?

转载 作者:行者123 更新时间:2023-12-04 13:01:32 29 4
gpt4 key购买 nike

我想让我的 MainWindow 成为一个单例,因为我想让我的应用程序中的所有其他窗口更容易访问它。但我无法让它运行。这就是我所做的。

像往常一样,我将 MainWindow 承包商设为私有(private),并创建了 public static MainWindow Instance属性返回一个静态实例。当我在没有任何其他更改的情况下运行它时,出现“无可用源”错误。我在网上搜索了一下,在 http://www.netframeworkdev.com/windows-presentation-foundation-wpf/xamlc-singleton-class-80578.shtml 找到了一个相关主题。 .但是,我无法让它按照那里的建议工作。有些人建议从 MainWindow.xaml 中进行更改

<Window x:Class="TestApp.MainWindow"


<Window x:Class="TestApp.MainWindow.Instance"

这看起来合乎逻辑。然而,当我这样做时,我得到了大量的编译错误(第一个说命名空间 TestApp 已经包含“MainWindow”的定义。)

我在网上找到了很多关于如何制作单实例应用程序的文章。我不是在找这个。我只想让我的 MainWindow 成为单例。我在 WinForm 应用程序中做过很多次。

最佳答案

不确定是否要使其成为单例,但您为什么要这样做?您可以简单地使用 Application.Current.MainWindow 随时随地在应用程序中获取 Application.MainWindow 属性。请参阅:http://msdn.microsoft.com/en-us/library/system.windows.application.mainwindow(v=VS.90).aspx .

Window mainWin = Application.Current.MainWindow;
mainWin.Title = "This will be set as the title of the Main Window";

使它成为单例对我来说仍然没有意义 - 这如何使它更容易访问?您始终可以在公共(public)静态变量中保存对主窗口的引用 - 这可以在主窗口的构造函数中设置:
public partial class MainWindow : Window
{
public static MainWindow myMainWindow; // ASSUMPTION: only one MainWindow is ever constructed otherwise this will be overwritten by latest such instance

public MainWindow()
{
InitializeComponent();
myMainWindow = this;
}
}

但是鉴于上面的 Application.Current.MainWindow 为什么要打扰..

关于wpf - 如何使我的 WPF MainWindow 成为单例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3827612/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com