这是一个基本过程,我在Google或Kindle帐户上的参考书籍中找不到任何信息。
在Windows 8之前的常规表单应用程序中,如果您在表单2上并且想要在表单1上更新某些内容,则只需键入:
form1.Default.controlOnForm1.text = "updated text";
这在Windows 8中不起作用。
谢谢。
更新: 在数据绑定不能满足我需要的情况下,我找到了一种简单的方法。我只需创建一个我需要访问的控件的静态副本。说第2页上的Button1需要在第1页上访问。
在顶部声明:
public static Button statButton1;
在加载的事件中,我在静态副本和XAML代码中的按钮之间创建关系:
statButton1 = Button1;
然后很简单,您可以随时随地访问该按钮:
page2.statButton1.Width = 48;
答案 0 :(得分:2)
Windows 8应用程序(或任何其他基于XAML的应用程序)通常使用MVVM模式制作。我真的推荐你read about it并做同样的事情。这种模式导致应用程序中的耦合较少,并使其更易于开发和维护。
您在此处讨论的更改类型将通过在ViewModel(VM)上设置属性来完成,而该属性反过来通过PropertyChangedEvent
通知View(UI),以便它可以自行刷新。
要允许ViewModel设置彼此的属性,他们都需要了解彼此,这反过来会导致高耦合。这通常通过使用EventAggregator
或MessageBus
来解决,{{1}}或{{1}}基于订阅/发布模式在对象之间发送消息/事件(彼此不了解)。
首先,我会看An Address Book Application Made in MVVM for Metro。这是一个基本示例,它显示了没有任何框架的此模式的用法。
一旦您对MVVM模式感到满意,我建议您使用Caliburn.Micro或MVVM Light这样的框架。这些框架为使用MVVM模式构建应用程序提供了许多优秀的东西。