如何使用MVVM将XAML Label与TapGestureRecognizer绑定?

时间:2018-02-26 19:03:21

标签: xaml mvvm uitapgesturerecognizer reactiveui

我正在尝试使用Frame(用于边框和背景)和Label(用于按钮文本)来模拟XAML按钮。但是,我需要在单击时为模拟按钮添加TapGestureRecognizer。我试图在使用ReactiveUI和MVVM的范围内做到这一点,但似乎无法正确地连接绑定。

我跟随this tutorial,它在XAML代码中设置绑定,如下所示:

[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class LoginPage : ContentPageBase<LoginViewModel>
{
    public LoginPage()
    {
        InitializeComponent();

        NavigationPage.SetHasNavigationBar(this, false);

    }

    protected override void OnAppearing()
    {
        base.OnAppearing();

        this.WhenActivated(disposables =>
        {
            this.Bind(ViewModel, vm => vm.Username, c => c.UsernameEntry.Text)
                .DisposeWith(disposables);

            this.Bind(ViewModel, vm => vm.Password, c => c.PasswordEntry.Text)
                .DisposeWith(disposables);

            //this.OneWayBind(ViewModel, x => x.LoginCommand, x => x.LoginButton.LoginCommand)
            //    .DisposeWith(disposables);

            this.OneWayBind(ViewModel, x => x.LoginCommand, x => x.SimulatedLoginButton.TapGestureCommandGoesHere)
                .DisposeWith(disposables);

            this.OneWayBind(ViewModel, x => x.IsLoading, x => x.LoginActivityIndicator.IsRunning)
                .DisposeWith(disposables);
        });
    }

我已经注释了Button绑定(上图)并插入了模拟的Button代码(当然没有编译)。问题是模拟按钮(框架)没有button.Command,我不知道如何添加tapgesture命令以便识别它。

我已经看过/尝试过使用Frame.TapGestureRecognizer标记的XAML,但是无法使用此方法让绑定与XAML一起使用。

我是如何使用MVVM实现的?

0 个答案:

没有答案