1

我相信我在某处读到过,在 WinRT 中触发 UI 事件的顺序是任意的。我也相信我读到它不同于 Silverlight 和/或 WPF,当然还有 WinForms。它的不同之处在于在 WinForms 中您可以确定地知道,例如,按钮的 Click 事件在 GotFocus 之后触发等等(示例可能不正确)。在 WinRT 中你不能。我自己做了一些粗略的测试,似乎是正确的。有时事件 X 先触发,有时事件 Y。

任何人都可以为我确认这些假设,特别是关于我不太精通的 Silverlight 和 WPF 吗?最好带有微软官方文章的链接。

我相信这是一个需要掌握的重要概念,因为它会影响您在事件处理程序中可以做什么和不可以做什么——尤其是在与数据绑定属性同步方面。

4

1 回答 1

0

WinRT 是对运营模型的完全重新定义。不过,不要让这些话吓到你。这意味着曾经有同步动作的地方,它们已经变成了异步动作。

但是,这意味着您正确地假设一个事件可能在另一个事件之前触发。使用预构建的 WinRT 控件,无法同步异步,但使用自定义代码,您可以实现调用和响应模式。

我在博客中介绍了事件聚合器,它允许从应用程序的任何位置发布和订阅事件:

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

通过创建一组事件,原始事件订阅者发布第二个事件,第二个事件订阅发布第三个事件......到第 N 层。

这也是一种创建同步方法的错觉(和操作顺序)的解耦方式。

每个响应时间可能超过 50 毫秒的方法都被重写为异步。

这是 MSDN 博客中对异步的相当详细的解释:http: //blogs.msdn.com/b/windowsappdev/archive/2012/06/14/exposing-net-tasks-as-winrt-asynchronous-operations.aspx

于 2012-10-04T18:39:00.560 回答