5

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

这里的问题是我想显示随某些事件动态变化的文本。一个示例是一个应用程序,其中一个数字显示在屏幕上,并且每当单击鼠标时都会递增 1。

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

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

谢谢您的帮助!

- 编辑 -

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

PropertyChanged(this, new PropertyChangedEventArgs(propertyName));

这是异常信息:

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

4

1 回答 1

7

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

这是允许 xaml 层知道绑定数据中的值何时更改并相应更新的接口。


根据新信息进行编辑:

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

这表明您正在从单独的线程中更改属性,这可能会导致问题。您可能需要使用CoreDispatcher.RunAsync将其编组回主线程。有关详细信息,请参阅此线程

于 2012-05-25T18:01:41.167 回答