【问题标题】:How do `Clicked` and `Command` work when they are both used on the same Xamarin view?`Clicked` 和 `Command` 在同一个 Xamarin 视图上使用时如何工作?
【发布时间】:2020-03-27 09:17:49
【问题描述】:

我有一个Command(在我的viewModel 中)和一个Clicked 事件(在我后面的代码中)附加到我的XAML 中的同一个视图中,我注意到一些奇怪的结果。我这样做是因为我希望视图在执行命令的代码后立即获得焦点:

  1. CommandClicked 事件是同步还是异步执行?
  2. 使用这种方法是否有任何不利影响。
  3. 有没有更好的方法来处理这个问题?

【问题讨论】:

  • 你看到了什么奇怪的行为?
  • 结果不一致,有时会在命令代码执行之前触发Clicked事件,反之亦然。
  • 这就是它们通常的工作方式,但是从你所说的来看,如果你只是想聚焦一个视图,那么首先执行哪个并不重要。我不能说命令,但事件是不可靠的。只要系统有时间处理它们,它们就会被处理。通常这是即时的,但不能保证。

标签: c# .net xamarin xamarin.forms


【解决方案1】:

是的,Click 事件是异步执行的。但是,我相信命令不是。它们在执行相关操作之后立即执行。

我的建议是不要将这两者一起用于您要查找的内容。因为只要线程和处理器空闲,就会处理事件。因此,您不能依赖它来满足您的要求,因为它取决于其他一些操作。

您可以通过使用 Xamarin 表单中的行为来实现您想要的。有关更多详细信息,请参阅以下链接。

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/behaviors/creating

【讨论】:

  • 最终通过从我的视图模型中调用一个函数(分配给一个命令)来处理它,但这个答案肯定有帮助,所以我会将其标记为已接受。
  • 感谢 Kikanye?
【解决方案2】:

Xamarin 视图是一个部分类 - 由视图和代码分隔

  • 视图(使用 XAML 创建前端)
  • 代码隐藏(编写逻辑)

您可以使用 View 和 code behind 轻松编写整个应用程序,但从长远来看并不实用。

如果您想使用 MVVM 或 MVC,您将需要使用 Binding(与视图分离逻辑)

回答你的问题:

命令 - 最好使用 MVVM 或 MVC

点击事件 - 最适合代码隐藏逻辑,例如点击一个按钮

More information about MVVM design patterns

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-30
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多