【问题标题】:Prism Button click command棱镜按钮点击命令
【发布时间】:2018-12-12 16:13:22
【问题描述】:

我尝试通过 Behaviors 命令打开抽屉菜单(Syncfusion 控制)

Xaml

<Button x:Name="hamburgerButton" 
                                HeightRequest="50" WidthRequest="50" 
                                HorizontalOptions="Start" FontSize="20"
                                BackgroundColor="#1aa1d6" >
                            <Button.Behaviors>
                                <b:EventToCommandBehavior EventName="Clicked" 
                                      Command="{Binding HamburgerButton}" />
                            </Button.Behaviors>

虚拟机cs

    public DelegateCommand HamburgerButton { get; private set; }   
 public QuickPartViewModel(INavigationService navigationService)
{ 
    HamburgerButton = new DelegateCommand(HamburgerButton_Clicked);
}
    public void HamburgerButton_Clicked(object sender, EventArgs e)
            {            
                navigationDrawer.ToggleDrawer();
            }

如果 HamburgerButton_Clicked(object sender, EventArgs e) 带有参数,那么我有错误 -// 参数:无法从“方法组”转换为操作

如果我删除参数它不起作用

【问题讨论】:

    标签: mvvm xamarin.forms prism


    【解决方案1】:

    你想太多了。只需将命令绑定到按钮即可。

    在页面中:

    <Button Command="{Binding HamburgerCommand}" />
    

    在视图模型中:

    public QuickPartViewModel()
    { 
        HamburgerCommand = new DelegateCommand(OnHamburger);
    }
    
    public DelegateCommand HamburgerCommand { get; }   
    
    private void OnHamburger()
    {            
         navigationDrawer.ToggleDrawer();
    }
    

    试试the docs...

    【讨论】:

    • 不幸的是,如果我没有像 xaml.cs 中的 MVVM 之类的代码,则无法工作 private void HamburgerButton_Clicked(object sender, System.EventArgs e) { navigationDrawer.ToggleDrawer();并在 xaml "Clicked" 中使用事件,然后一切正常
    • 当然,您可以在代码后面使用事件处理程序收听Clicked 事件,但是如果您将MVVM 标签放在问题上并谈论命令,则假设您想要使用视图模型并绑定到那里的命令。
    猜你喜欢
    • 2018-05-01
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-15
    相关资源
    最近更新 更多