【发布时间】:2014-10-14 19:37:49
【问题描述】:
我刚开始摆弄 C# 和 WPF。
假设我想实例化一个黑色网格,并且我想在所述网格中随机移动一个红色方块。
目前我基本上可以做任何我想做的事,只要我把所有东西都保存在“MainWindow.xaml.cs”中......
现在,我的问题是,如果我创建一个新类(例如“MakeStuffHappen.cs”)并从中尝试访问将由 MainWindow 的构造函数实例化的网格(名为“MyGrid”),智能感知不会t“看到”它。 我尝试制作一个返回“MyGrid”的getter,但编译器说“非静态字段、方法或属性'ProjectName.MainWindow.getGrid()'需要对象引用。 显然我不能将 MainWindow 定义为静态类...
关于如何解决这个问题的任何提示?
谢谢!
附:由于我显然不是程序员,因此我不一定知道在查找信息时要使用的技术术语......所以如果已经问过这个问题,我提前道歉。
附言我看到了这个:Access MainWIndow Control from a class in a separate file 但它没有帮助。
【问题讨论】:
-
有了这样的知识水平,我想你最好在开始实际编码之前阅读 C# 教程。
-
您可以在 MainWindow.cs 中创建控件的静态实例,并像 MainWindow.yourControl 一样调用它
-
@Sybren 为什么曾经为 UI 类创建静态成员?为什么不直接在创建实例的时候传入,然后调用公共方法呢?
-
考虑通过公共方法启动故事板。如果移动必须是随机的仍然通过公共方法启动它,然后在
MainWindow而不是MakeStuffHappen中处理它。 -
@Gebb:虽然您所说的绝对正确,但如果您提及要查找的特定 C# 主题或一般 OOP 概念,我将不胜感激。不过还是谢谢。我会这样做,并尝试其他人的建议。
标签: c# wpf windows scope visual-studio-express