这似乎是可行的,但由于某种原因,我没有想到正确的方法。我是 C# 和 .NET 的新手,所以我希望这不是一个荒谬的问题 :)
2 回答
不知道你为什么要这样做。这似乎不是最好的设计,但在不知道你在做什么的细节的情况下,我无法对此发表评论。这是如何做到的:
在 App.Xaml.cs 中:
var main = App.Current.MainWindow as MainWindow; // If not a static method, this.MainWindow would work
main.MyFunction();
请注意,您必须在启动后执行此操作。如果您想在启动之前执行此操作,则需要创建MainWindow
对象并将其分配给this.MainWindow
:
var window = new MainWindow();
this.MainWindow = window;
window.Show();
window.MyFunction();
很高兴看到有人开始!坚持下去,你会发现这种语言很强大,最终你会看到他们打算在你的编码中使用的设计方法。
我只能解释您可能想要做这样的事情的几种情况。
1)调用一些独立于窗口的函数:
如果您的代码不依赖或不引用您的 MainWindow,也许您应该将其移出 MainWindow 的代码文件并将其放在其他位置?您可以拥有任意数量的 .cs 文件,因此请花点时间整理一下。你以后会很高兴的。
2)在窗口加载后执行一些初始化任务:
在您的窗口代码中,在构造函数中的 InitializeComponent() 调用之后插入您的代码。(这是没有返回类型的方法,它只是“public MainWindow() {”
请记住,当您需要传入某些内容时,您可以向构造函数添加参数。Visual Studio 创建的默认无参数构造函数没有什么神奇之处。您或许可以通过这种方式避免创建大量复杂的代码。通常最好在窗口的代码中进行初始化而不是加载窗口,
3)获取一些简单的数据进出窗口
你学会了如何创建自定义属性了吗?这真的很容易。