我创建了一个简单的内容页面来测试各种事件。在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();
}
}
答案 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();
}
}