检测选项卡更改事件

Arv*_*iya 2 c# xamarin.forms

我正在研究 xamarin.forms。我需要通过左右交换或单击而不使用自定义渲染器来检测选项卡被更改的事件

我尝试了以下事件,但是在推送子页面或更改选项卡时,它在两种情况下都会触发。我怎样才能得到选项卡被更改的孤立事件

public class MyTabbedPage : TabbedPage
{
   public MyTabbedPage()
   {
      this.CurrentPageChanged += CurrentPageHasChanged;
   }
   protected void CurrentPageHasChanged(object sender,EventArgs e)
   {
       var pages= Navigation.NavigationStack;
       if (pages.Count > 0)
       {
           this.Title = pages[pages.Count - 1].Title;
       }
       else
       this.Title = this.CurrentPage.Title;
   }
}
Run Code Online (Sandbox Code Playgroud)

我面临的这个问题是:在下面的截图中,第 1 部分是 Homepage(title="Diary") & part2 是 Childpage(title="Homework") 当我更改标签并再次来到第一个标签时,导航栏标题将“作业”更改为《日记》(Screeshot2)

在此处输入图片说明

在此处输入图片说明

Car*_*ice 8

当您已经在选项卡式页面上时,您实际上可以执行以下操作

public partial class MyTabbedPage : TabbedPage
{
    public MyTabbedPage()
    {
        InitializeComponent();          
        CurrentPageChanged += CurrentPageHasChanged;
    }

    private void CurrentPageHasChanged(object sender, EventArgs e) => Title = CurrentPage.Title;
}
Run Code Online (Sandbox Code Playgroud)

如果您想使用发件人,您可以执行以下操作

public partial class MyTabbedPage : TabbedPage
{
    public MyTabbedPage()
    {
        InitializeComponent();          
        CurrentPageChanged += CurrentPageHasChanged;
    }

    private void CurrentPageHasChanged(object sender, EventArgs e) 
    { 
        var tabbedPage = (TabbedPage) sender;
        Title = tabbedPage.CurrentPage.Title;
    }
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您可以详细说明您正在尝试做什么,我可以给出更好的答案,因为我不知道您正在尝试做什么