更新另一个页面上的控件 Windows 8 Metro 应用程序 C#



这是一个基本过程,我在谷歌或我的Kindle帐户上的参考书中找不到任何信息。

在 Windows 8 之前的常规表单应用程序中,如果您使用的是表单 2 并且想要更新表单 1 上的某些内容,您只需键入:

form1.Default.controlOnForm1.text = "updated text";

这在 Windows 8 中不起作用。

谢谢。

更新: 我找到了一种简单的方法,可以在数据绑定不满足我的需求的情况下执行此操作。 我只是创建我需要访问的控件的静态副本。 假设第 2 页上的按钮 1 需要访问第 1 页。

在顶部声明:

public static Button statButton1;

在加载事件中,我在 XAML 代码中创建静态副本和按钮之间的关系:

statButton1 = Button1;

然后像馅饼一样简单,您可以在任何地方访问该按钮:

page2.statButton1.Width = 48;

Windows8应用程序(或任何其他基于XAML的应用程序)通常使用MVVM模式创建。我真的建议您阅读它并做同样的事情。此模式可减少应用程序中的耦合,并使其更易于开发和维护。

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

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

首先,我会看看在 MVVM for Metro 中制作的地址簿应用程序。这是一个基本示例,显示了在没有任何框架的情况下使用此模式的用法。

一旦你对MVVM模式感到满意,我建议你使用像Caliburn.Micro或MVVM Light这样的框架。这些框架为使用 MVVM 模式构建应用程序提供了许多很棒的东西。

最新更新