gpt4 book ai didi

c# - 为 Xamarin.Forms 中的按钮选择处理程序或命令的最佳实践

转载 作者:行者123 更新时间:2023-12-03 11:01:59 25 4
gpt4 key购买 nike

我是 Xamarin 的新手。通过学习 MVVM 模式,我有了用命令映射按钮的想法,并在 View 模型中处理逻辑事物。

然后情况发生了变化。
当我为移动应用开发一些登录功能时,我需要调用 “显示警报” “流行” “推” 单击按钮时。

我查看了一些论坛和博客以了解如何解决,如下所示:

  • 将导航作为参数传递,例如 this thread ,甚至在同一个线程中使用注入(inject);
  • 使用 NuGet 包,如 userdialogs
  • 使用像 Microsoft docs 这样的处理程序, (所以我认为在简单导航中使用处理程序是可以接受的)。
  • 在 View 模型类中添加一些消息文本并映射到 View 上的某些条目,但是当对话框或导航需要时,这不能解决冲突。

  • 那么这个问题是否应该改为“如何选择按钮实现、处理程序或命令”?

    但同样,MVVM 不推荐使用“处理程序”。现在我很困惑。

    任何建议都会有所帮助。

    干杯。

    最佳答案

    虽然你使用过 MVVM .Use 命令更好,因为如果你在后面的代码中使用点击事件,它会破坏 MVVM 的标准(我们应该尽快处理 ViewModel 中的逻辑)。

    您可以在 ViewModel 中处理逻辑并在 xaml 中传递参数。

    例如,如果您想传递内容页面并在 ViewModel 中获取导航

    in xaml


    <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:d="http://xamarin.com/schemas/2014/forms/design"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    x:Name="MainContentPage"
    x:Class="xxx.MainPage">

    //...

    <Button Command="{Binding Path=BindingContext.ButtonClickCommand , Source={x:Reference MainContentPage}}" CommandParameter="{Binding .}" Text="xxx"/>
    ...

    in ViewModel


    ButtonClickCommand = new Command(
    (parameter) =>
    {
    var page = parameter as ContentPage;
    // do something you want
    });

    关于c# - 为 Xamarin.Forms 中的按钮选择处理程序或命令的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57000329/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com