SelectedItem di TabbedPage.xaml tidak berfungsi di Xamarin.Form

Hai semuanya Selamat siang Saya telah membuat tab dalam xaml, saya lebih suka xaml karena saya telah login dalam kode xaml. Kode Saya

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");
           }
         }

       }

     }

berubah menjadi

  _tbPage.SelectedItem == _tbList 

Hal serupa tidak terjadi apa-apa, Bagaimana cara mengatasinya? terima kasih banyak.


person jake talledo    schedule 03.08.2016    source sumber
comment
Saya minta maaf tetapi bagi saya tidak jelas apa yang ingin Anda capai? Bisakah Anda menjelaskannya lebih lanjut?   -  person Gerald Versluis    schedule 03.08.2016
comment
@GeraldVersluis yang ingin saya capai adalah perbedaan USER dan Administrator, katakanlah jika pengguna akan mengakses Daftar Tab itu, pesan munculan mengatakan Anda tidak berwenang untuk mengakses daftar tersebut   -  person jake talledo    schedule 04.08.2016
comment
Mungkin pendekatan lain lebih baik? Mengapa tidak menghapus tab tersebut sama sekali jika pengguna tidak dapat mengaksesnya?   -  person Gerald Versluis    schedule 04.08.2016
comment
@GeraldVersluis ada tab yang dapat diakses pengguna :D hanya satu tab yang tidak diizinkan pengguna.   -  person jake talledo    schedule 04.08.2016
comment
Jadi, periksa haknya ketika halaman tersebut muncul dan lakukan Children.Remove(_tbLogn); jika itu adalah tab yang tidak ingin Anda beri haknya. Atau balikkan dan hanya tambahkan jika pengguna memiliki haknya.   -  person Gerald Versluis    schedule 04.08.2016
comment
@GeraldVersluis terima kasih tapi saya sudah menyelesaikannya. Saya memposting solusinya :D terima kasih lagi   -  person jake talledo    schedule 04.08.2016


Jawaban (2)


Ini mungkin tidak mewah tetapi berhasil bagi saya :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

Saya menyetel SelectedItem ke null terlebih dahulu, sebelum menyetelnya ke halaman yang ingin saya tampilkan.

person Ian Warburton    schedule 10.07.2018
comment
Saya sudah lama meninggalkan formulir dan sekarang bekerja di Java Android. - person jake talledo; 13.07.2018
comment
Ya sepertinya pengaturan ke null diperlukan untuk memicu sesuatu agar tab benar-benar beralih. - person Jamin; 20.05.2019