OnBackButtonPressed未在ViewModel中触发

时间:2016-06-24 06:27:01

标签: events xamarin.forms onbackpressed

我创建了一个简单的内容页面来测试各种事件。在ViewModel中重写OnBackButtonPressed时,不会引发事件。根据xamarin的说法,这个事件不会在iOS上引发,但它应该适用于Android和WP。但我不能让它在这些平台上工作。

我缺少什么?

TestPage.xaml

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="TestPage.TestPage"
             Title="testPage">
</ContentPage>

TestPage.xaml.cs

public partial class TestPage : ContentPage
{
    public TestPage ()
    {
        InitializeComponent();
        this.BindingContext = new TestPageViewModel();
    }
}

视图模型

public class TestPageViewModel : ContentPage, INotifyPropertyChanged
{
     public TestPageViewModel() {   }
     protected override bool OnBackButtonPressed()
     {
         // Do stuff
         return base.OnBackButtonPressed();
     }
}

1 个答案:

答案 0 :(得分:1)

在Xamarin论坛上得到了答案。我必须将OnBackPressed覆盖放在我的xaml文件的代码隐藏中,而不是在我的视图模型中:

public partial class MyPage2 : ContentPage
{
    public MyPage2()
    {
        InitializeComponent();
        this.BindingContext = new TestPageViewModel();
    }

    protected override bool OnBackButtonPressed()
    {
        // Do stuff
        return base.OnBackButtonPressed();
    }
}