2012-05-25 51 views
5

我已經使用C#中的Visual Studio 11 Ultimate爲Win 8創建了一個基本的Metro應用程序。更新Windows 8 C#Metro App的圖形用戶界面

這裏的問題是我想要顯示隨某些事件動態變化的文本。 一個例子是一個應用程序,其中一個數字顯示在屏幕上,每當鼠標被點擊時增加1。

我已經使用XAML綁定到我創建的數據結構,它獲取我需要顯示的值,但問題是,隨着這些值更改,GUI上顯示的數字不會更改。

如何將我的XAML綁定到動態更改的數據,以便GUI上的XAML顯示也發生更改?

感謝您的幫助!

- 編輯 -

我已經實現了INotifyPropertyChanged接口,但我現在的這行代碼收到異常:

的PropertyChanged(這一點,新PropertyChangedEventArgs(propertyName的));

這裏是異常信息:

的應用程序調用這是編組爲一個不同的線程的接口。 (異常來自HRESULT:0x8001010E(RPC_E_WRONG_THREAD))

+1

一些示例代碼,將有助於爲這裏:-) –

+0

這聽起來像你正在試圖改變這種處理它的線程之外的控制起點(基於HRESULT錯誤代碼)。 –

+0

你如何處理鼠標的「點擊」?你的代碼背後的事件?一個ICommand在你的視圖模型上?根據你正在處理的點擊,這也是在那裏我假設你設置你的屬性來顯示,你要當元帥的PropertyChanged事件回到UI線程。 – Thelonias

回答

7

確保您綁定到(正確)的「數據結構」實現INotifyPropertyChanged並在您想要通知UI發生更改時調用PropertyChanged事件。

這是允許xaml層知道綁定數據中的值何時發生更改並相應更新的接口。


編輯迴應新的信息:

應用程序調用這是編組爲一個不同的線程的接口。 (異常來自HRESULT:0x8001010E(RPC_E_WRONG_THREAD))

這表明你正在提高從一個單獨的線程更改的屬性,這可能會導致問題。您可能需要使用CoreDispatcher.RunAsync將其歸還給主線程。有關詳細信息,請參閱this thread

+0

唯一的問題是不再支持CoreDispatcher.Invoke。 –

+0

@JoshuaMak啊 - 總是忘了,它需要切換到RunAsync - 固定。 –

相關問題