2012-09-28 57 views
1

我相信我讀過的地方是,在WinRT中觸發UI事件的順序是任意的。我也相信我讀到它不同於Silverlight和/或WPF,肯定是WinForms。它的不同之處在於,在WinForms中,您可以確切地知道,例如Button的Click事件在GotFocus之後觸發等等(示例可能不正確)。在WinRT中你不能。我自己做了一些粗略的測試,似乎是正確的。有時事件X首先發射,有時是Y.WinRT中的UI事件順序與WinForms,SL和WPF比較

任何人都可以請確認這些假設對我來說,特別是對於Silverlight和WPF,我不是很熟練?最好鏈接到官方微軟文章。

我相信這是一個很重要的概念,因爲它會影響事件處理程序中可以做什麼和不可以做什麼 - 特別是在與數據綁定屬性同步方面。

回答

0

WinRT是對操作模型的完全重新定義。不要讓這些話嚇倒你。這意味着,凡是曾經有過同步操作的地方,它們都變成了異步操作。

這是什麼意思,但是,你認爲一個事件可能會在另一個事件之前觸發是正確的。使用預構建的WinRT控件,可以完成同步異步的功能不多,但使用自定義代碼時,可以實現調用和響應模式。

我在博客事件匯聚,讓事件予以公佈,並在該應用的任何訂閱:

http://developingzack.blogspot.com/2012/09/what-why-and-how-event-aggregator.html

通過創建一組事件,其中原始事件訂戶,出版第二活動和第二次活動訂閱發佈第三個活動...到第N層。

這也將是一種解耦方式來創建同步方法的錯覺(和操作順序)。

每個可能需要超過50ms響應時間的方法都被重寫爲異步。

這裏是異步的從MSDN博客了相當詳細的解釋:http://blogs.msdn.com/b/windowsappdev/archive/2012/06/14/exposing-net-tasks-as-winrt-asynchronous-operations.aspx

+0

但是你知道的WinRT使用異步模式在UI層隔離?真正的異步模式是爲什麼現在GotFocus事件不總是在PointerPressed之前觸發的原因(同樣是隨機示例)? PS:你的博客文章本身很有趣 - 我在那裏發表了評論 – Nilzor