在另一个页面更新控制windows 8 metro app c#

时间:2012-11-07 19:24:46

标签: c# xaml controls microsoft-metro

这是一个基本过程,我在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;

1 个答案:

答案 0 :(得分:2)

Windows 8应用程序(或任何其他基于XAML的应用程序)通常使用MVVM模式制作。我真的推荐你read about it并做同样的事情。这种模式导致应用程序中的耦合较少,并使其更易于开发和维护。

您在此处讨论的更改类型将通过在ViewModel(VM)上设置属性来完成,而该属性反过来通过PropertyChangedEvent通知View(UI),以便它可以自行刷新。

要允许ViewModel设置彼此的属性,他们都需要了解彼此,这反过来会导致高耦合。这通常通过使用EventAggregatorMessageBus来解决,{{1}}或{{1}}基于订阅/发布模式在对象之间发送消息/事件(彼此不了解)。

首先,我会看An Address Book Application Made in MVVM for Metro。这是一个基本示例,它显示了没有任何框架的此模式的用法。

一旦您对MVVM模式感到满意,我建议您使用Caliburn.MicroMVVM Light这样的框架。这些框架为使用MVVM模式构建应用程序提供了许多优秀的东西。