3

这似乎是可行的,但由于某种原因,我没有想到正确的方法。我是 C# 和 .NET 的新手,所以我希望这不是一个荒谬的问题 :)

4

2 回答 2

7

不知道你为什么要这样做。这似乎不是最好的设计,但在不知道你在做什么的细节的情况下,我无法对此发表评论。这是如何做到的:

在 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();
于 2011-04-07T13:44:20.183 回答
2

很高兴看到有人开始!坚持下去,你会发现这种语言很强大,最终你会看到他们打算在你的编码中使用的设计方法。

我只能解释您可能想要做这样的事情的几种情况。

1)调用一些独立于窗口的函数:

如果您的代码不依赖或不引用您的 MainWindow,也许您应该将其移出 MainWindow 的代码文件并将其放在其他位置?您可以拥有任意数量的 .cs 文件,因此请花点时间整理一下。你以后会很高兴的。

2)在窗口加载后执行一些初始化任务:

在您的窗口代码中,在构造函数中的 InitializeComponent() 调用之后插入您的代码。(这是没有返回类型的方法,它只是“public MainWindow() {”

请记住,当您需要传入某些内容时,您可以向构造函数添加参数。Visual Studio 创建的默认无参数构造函数没有什么神奇之处。您或许可以通过这种方式避免创建大量复杂的代码。通常最好在窗口的代码中进行初始化而不是加载窗口,

3)获取一些简单的数据进出窗口

你学会了如何创建自定义属性了吗?这真的很容易。

于 2011-04-07T15:17:22.493 回答