2011-04-08 93 views
1

我正在尝试制作一个简单的Windows Phone 7 Silverlight应用程序。有一些UI元素的MainPage.xaml,以及带有一些代码的单独的C#类MyClass.csWP7访问MainPage元素

我的问题是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#新手试图跑步,然后他可以走!?)。

在此先感谢您提供的任何建议。

回答

2

答案是你不应该这样做,因为这种耦合水平很可能会在重用和特别是测试方面引发未来的问题。

你可以看看有一个单独的全局视图模型,它有你需要的信息(属性),并绑定到主视图的视图模型。

如果你需要你的班级在视图上调用方法,那么你可以看看一个消息系统或类似的东西。

+0

谢谢马特!我按照您的建议创建了一些独立的全局属性([在此列出](http://social.msdn.microsoft.com/Forums/en/winforms/thread/536b644b-bc4b-42c4-8ad5-2458553c3cd3)),将它们设置为'MainPage',并且它们在'MyClass'中完美工作。谢谢你的提示! – Superangel 2011-04-08 08:59:19