更新Windows 8 C#Metro App的GUI

时间:2012-05-25 17:55:12

标签: c# xaml windows-8 windows-runtime winrt-xaml

我使用C#中的Visual Studio 11 Ultimate为Win 8创建了一个基本的Metro应用程序。

这里的问题是我想显示随某些事件动态变化的文本。 一个例子是一个应用程序,其中一个数字显示在屏幕上,并且只要点击鼠标就增加1。

我使用XAML绑定到我创建的数据结构,它确实获得了我需要显示的值,但问题是当这些值发生变化时,GUI上显示的数字不会改变。

如何将我的XAML绑定到动态更改的数据,以便GUI上的XAML显示也发生变化?

感谢您的帮助!

- 编辑 -

我已经实现了INotifyPropertyChanged接口,但是现在我从这行代码中收到了一个Exception:

PropertyChanged(this,new PropertyChangedEventArgs(propertyName));

以下是例外信息:

该应用程序调用了一个为不同线程编组的接口。 (来自HRESULT的异常:0x8001010E(RPC_E_WRONG_THREAD))

1 个答案:

答案 0 :(得分:7)

确保您绑定的“数据结构”(正确)实现INotifyPropertyChanged并在您想要通知UI更改时调用PropertyChanged事件。

这是允许xaml层知道绑定数据中值何时发生变化的接口,并相应地进行更新。


编辑以回应新信息:

  

该应用程序调用了一个为不同线程编组的接口。 (来自HRESULT的异常:0x8001010E(RPC_E_WRONG_THREAD))

这表明你从一个单独的线程中提升了属性,这可能会导致问题。您可能需要使用CoreDispatcher.RunAsync将其封送回主线程。有关详细信息,请参阅this thread