我使用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))
答案 0 :(得分:7)
确保您绑定的“数据结构”(正确)实现INotifyPropertyChanged并在您想要通知UI更改时调用PropertyChanged事件。
这是允许xaml层知道绑定数据中值何时发生变化的接口,并相应地进行更新。
编辑以回应新信息:
该应用程序调用了一个为不同线程编组的接口。 (来自HRESULT的异常:0x8001010E(RPC_E_WRONG_THREAD))
这表明你从一个单独的线程中提升了属性,这可能会导致问题。您可能需要使用CoreDispatcher.RunAsync将其封送回主线程。有关详细信息,请参阅this thread。