我正在尝试制作一个简单的Windows Phone 7 Silverlight应用。 MainPage.xaml
包含一些UI元素,而单独的C#类MyClass.cs
包含一些代码。
我的问题是:MyClass
无法访问MainPage
中包含的任何内容(即,它不知道UI元素或C#方法存在)。
如果我尝试继承MainPage
,应用程序会编译,但拒绝运行:
public class MyClass : MainPage
{
// No good
}
如果我尝试this solution,则会收到InvalidCastException
错误:
public class MyClass
{
// Also no good
MainPage m = (MainPage)Application.Current.RootVisual;
}
我的问题是:如何从单独的课程中访问MainPage
?
在MainPage.xaml.cs
中,我可以简单地使用myElement.Property
等。但是,这在MyClass
中是不可能的,但我不确定原因。
我想有一个简单的答案,我错过了,但我真的不确定它是什么(... C#newbie试图在他走路之前跑步!?)。
提前感谢您提出的任何建议。
答案 0 :(得分:2)
答案是你不应该这样做,因为这种耦合程度可能导致将来在重用和特别是测试方面出现问题。
您可以查看具有单独的全局视图模型,该模型具有您需要的信息(属性)并绑定到主视图的视图模型。
如果您需要您的类在视图上调用方法,那么您可以查看消息传递系统或类似信息。