SelectedItem ใน TabbedPage.xaml ไม่ทำงาน Xamarin.Form

สวัสดีทุกคน ขอให้เป็นวันที่ดี ฉันได้สร้างแท็บใน xaml ฉันชอบ xaml เพราะฉันเข้าสู่ระบบด้วยรหัส xaml รหัสของฉัน

Tab.xaml

<TabbedPage 
        xmlns="http://xamarin.com/schemas/2014/forms"
        xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
        xmlns:local="clr-namespace:FormsSample.Views;assembly=FormsSample"
        x:Class="FormsSample.Views.LoginPage"
        x:Name="TbPage">
     <TabbedPage.Children>
        <ContentPage x:Name="TbLog" Title="Login">
        </ContentPage>
        <ContentPage x:Name="TbSch" Title="Schedule">
        </ContentPage>
        <ContentPage x:Name="TbLis" Title="Customers">
        </ContentPage>
        </TabbedPage.Children>   
</TabbedPage>

Tab.xaml.cs

   namespace FormsSample.Views
   {
    public partial class LoginPage : TabbedPage 
    {

       private readonly TabbedPage _tbPage;
       private readonly ContentPage _tbList;
       private readonly ContentPage _tbLogn; 


       public LoginPage()
       {
        InitializeComponent ();
        _tbPage = this.FindByName<TabbedPage>("TbPage");
        _tbList = this.FindByName<ContentPage>("TbLis");
        _tbLogn = this.FindByName<ContentPage>("TbLog");
        RunTime();
        }

        private void RunTime()
        {
               _tbPage.CurrentPage = _tbLogn; 
           if (_tbPage.SelectedItem == _tbPage.Children[2])
           {
              DisplayAlert("Tab", "Hello World", "OK");
           }
         }

       }

     }

เปลี่ยนเป็น

  _tbPage.SelectedItem == _tbList 

ไม่มีอะไรเกิดขึ้นเหมือนกัน วิธีแก้ปัญหานี้? ขอบคุณมาก.


person jake talledo    schedule 03.08.2016    source แหล่งที่มา
comment
ฉันขอโทษ แต่มันไม่ชัดเจนสำหรับฉันโดยตรงว่าคุณพยายามบรรลุอะไร? คุณช่วยอธิบายรายละเอียดเกี่ยวกับเรื่องนั้นได้ไหม?   -  person Gerald Versluis    schedule 03.08.2016
comment
@GeraldVersluis สิ่งที่พยายามทำให้สำเร็จคือความแตกต่างของ USER และผู้ดูแลระบบ บอกว่าผู้ใช้จะเข้าถึง Tablist นั้นหรือไม่ ข้อความป๊อปอัปแจ้งว่าคุณไม่ได้รับอนุญาตให้เข้าถึงรายการ   -  person jake talledo    schedule 04.08.2016
comment
บางทีแนวทางอื่นอาจจะดีกว่า? ทำไมไม่ลบแท็บทั้งหมดหากผู้ใช้ไม่สามารถเข้าถึงได้   -  person Gerald Versluis    schedule 04.08.2016
comment
@GeraldVersluis มีแท็บที่ผู้ใช้สามารถเข้าถึงได้ :D อนุญาตให้ผู้ใช้แท็บเดียวเท่านั้น   -  person jake talledo    schedule 04.08.2016
comment
ดังนั้น ให้ตรวจสอบสิทธิ์เมื่อเพจปรากฏขึ้น และทำ Children.Remove(_tbLogn); หากนั่นคือแท็บที่คุณไม่ต้องการให้สิทธิ์ หรือพลิกกลับและเพิ่มเฉพาะเมื่อผู้ใช้ ทำ มีสิทธิ์เท่านั้น   -  person Gerald Versluis    schedule 04.08.2016
comment
@GeraldVersluis ขอบคุณ แต่ฉันแก้ไขได้แล้วฉันโพสต์วิธีแก้ปัญหาแล้ว: D ขอบคุณอีกครั้ง   -  person jake talledo    schedule 04.08.2016


คำตอบ (2)


นี่อาจไม่แฟนซี แต่ใช้ได้ผลสำหรับฉัน :D

        this.CurrentPageChanged += (o, e) => 
        {
           var i = this.Children.indexOf(this.CurrentPage); 
            if(i == 1 && UsrType == 2)
            {
                 DisplayAlert("Admin", "Administrator Privilege required!", "OK");
                 this.CurrentPage = _tbLog;
            }
        };
person jake talledo    schedule 04.08.2016

ฉันตั้งค่า SelectedItem เป็น null ก่อน ก่อนที่จะตั้งค่าเป็นหน้าที่ฉันต้องการแสดง

person Ian Warburton    schedule 10.07.2018
comment
ฉันละทิ้งแบบฟอร์มมานานแล้วและตอนนี้ทำงานบน Java Android - person jake talledo; 13.07.2018
comment
ใช่ ดูเหมือนว่าจำเป็นต้องตั้งค่าเป็น null เพื่อทริกเกอร์บางอย่างเพื่อให้แท็บสลับได้จริง - person Jamin; 20.05.2019