5

C#でVisual Studio 11 Ultimateを使用して、Win8用の基本的なMetroアプリを作成しました。

ここでの問題は、特定のイベントで動的に変化するテキストを表示したいということです。例としては、画面に数字が表示され、マウスがクリックされるたびに1ずつ増加するアプリがあります。

作成したデータ構造にXAMLバインディングを使用して、表示する必要のある値を取得しましたが、問題は、これらの値が変更されても、GUIに表示される数値が変更されないことです。

XAMLを動的に変更されるデータにバインドして、GUIのXAML表示も変更するにはどうすればよいですか?

助けてくれてありがとう!

- 編集 -

INotifyPropertyChangedインターフェイスを実装しましたが、次のコード行から例外を受け取ります。

PropertyChanged(this、new PropertyChangedEventArgs(propertyName));

例外情報は次のとおりです。

アプリケーションは、別のスレッド用にマーシャリングされたインターフェースを呼び出しました。(HRESULTからの例外:0x8001010E(RPC_E_WRONG_THREAD))

4

1 に答える 1

7

Make sure your "data structure" you're binding to (properly) implements INotifyPropertyChanged and invokes the PropertyChanged event when you want to notify the UI of a change.

This is the interface that allows the xaml layer to know when values change in the bound data, and update accordingly.


Edit in response to new information:

The application called an interface that was marshalled for a different thread. (Exception from HRESULT: 0x8001010E (RPC_E_WRONG_THREAD))

This suggests you're raising the property changed from a separate thread, which will potentially cause issues. You may need to marshal this back to the main thread using CoreDispatcher.RunAsync. For details, see this thread.

于 2012-05-25T18:01:41.167 に答える