Xamarin.forms: [Peningkatan] Tambahkan FlyoutItem.IsVisible, Tab.IsVisible, BaseShellItem.IsVisible

Dibuat pada 13 Feb 2019  ·  26Komentar  ·  Sumber: xamarin/Xamarin.Forms

Ringkasan

Sediakan properti terlampir sehingga pengguna dapat lebih langsung menentukan apakah sesuatu terlihat di Flyout atau di TabBar.

Saran API di masa mendatang

Kita harus menambahkan opsi sehingga ketika pengguna menggunakan FlyoutDisplayOptions="AsMultipleItems" sehingga mereka dapat memilih untuk menampilkan induknya sebagai Header. Dengan kontrol ekspansi, kami juga dapat menambahkannya sebagai pengaturan.

API

```C#
FlyoutItem.IsVisible // Properti Terlampir BP
Tab.IsVisible // Properti Terlampir BP
BaseShellItem.IsVisible // BP (bukan properti terlampir)

## Examples BaseShellItem.IsVisible 

If you set BaseShellIitem IsVisible to false it won't show up in the Flyout or on any of the tabs

## Examples Tab.IsVisible

```xaml
<TabBar>
    <Tab Title="Tab 1">
          <ShellContent Title="Top Tab 1" />
          <ShellContent Title="Top Tab 2"  Tab.IsVisible="false"/>
          <ShellContent Title="Top Tab 3" />
    </Tab>
    <Tab Title="Tab 2" Tab.IsVisible="false">
    </Tab>
</TabBar>

Contoh FlyoutItem.IsVisible

Pengguna menginginkan Flyout yang tidak mencerminkan tab apa pun di layar.

<MenuItem title="item 1 "/>
<MenuItem title="item 2" />
<MenuItem title="item 3" />
<TabBar Shell.FlyoutBehavior="Flyout" FlyoutItem.IsVisible="False">
    <Tab>
    </Tab>
</TabBar>

Membuat 3 Item Flyout

  • Barang 1
  • Butir 2

- Butir 3

<FlyoutItem title="item 1 " />
<FlyoutItem title="item 2" />
<ShellContent title="Content" FlyoutItem.IsVisible="False" />

Membuat 2 Item Flyout bahkan jika Anda menggunakan elemen ShellContent

  • Barang 1
  • Butir 2

Kasus Penggunaan yang Dimaksudkan

Kasus penggunaan yang saya pikirkan adalah memiliki item di menu Hamburger bagi pengguna untuk meningkatkan aplikasi ke Premium. Setelah pengguna memutakhirkan, item tersebut seharusnya tidak lagi terlihat.
Orang tua: #2415

shell in-progress high impact proposal-accepted enhancement ➕

Komentar yang paling membantu

Bisakah kami mendapatkan pembaruan tentang ini? (sangat, sangat menginginkan ini!)

Semua 26 komentar

Ada pembaruan tentang ini?

@PureWeen Saya melihat Anda menggunakan ini di Xam Dev Summit, apakah ini dalam Pra atau belum?

Kasus penggunaan lain yang dimaksudkan adalah di mana satu set fitur (sering digunakan) harus terlihat di bilah tab bawah dan set fitur lainnya (pengaturan, pemulihan pembelian, bantuan, tentang, dll.) harus dapat diakses dari menu hamburger. Jika ini sudah memungkinkan, beri tahu saya.

Bisakah kami mendapatkan pembaruan tentang ini? (sangat, sangat menginginkan ini!)

menabrak

Sangat membutuhkan ini

Ada pembaruan tentang ini?

Perubahan apapun? Kami sangat membutuhkan ini.

Ada pembaruan tentang ini?

Shell tampaknya tidak berguna kecuali Anda sedang membangun aplikasi yang sangat kecil. Tanpa ini, kami tidak dapat mengatur izin atau menyembunyikan halaman yang tidak kami inginkan dengan cepat. Bagaimana ini bukan prioritas sekarang?

Anda benar @brepetti
Saya ingin tahu apakah saya kehilangan sesuatu di sini ...

@rodrigojuarez @brepetti

Bagian lucunya adalah di XDS tahun lalu dibahas sebagai item yang akan segera hadir... Sampai pada titik di mana mereka menunjukkannya.

Saya pikir ini mungkin akhirnya menjadi pemblokir karena cara menangani tumpukan navigasi. Karena saya tahu bahwa contoh yang ditampilkan di XDS menggunakan sebagian besar tumpukan navigasi khusus/dibangun kembali.

Saya berhasil membuatnya bekerja untuk Tab Top TabBar dengan solusi manual dengan membuat item ShellContent secara manual (menambahkan, menghapus). Di Xamarin.Forms 4.6 sekarang juga berfungsi untuk iOS (baru saja diperbaiki 1 hari yang lalu di 4.6).

Haruskah bekerja untuk Menu Hamburger juga?

@malte1989 Ya kita berbicara tentang item shell alias sesuatu yang ada di pohon visual shell.

@malte1989 dapatkah Anda memberikan beberapa contoh kode?

@malte1989 dapatkah Anda memberikan beberapa contoh kode?

Tentu, saya akan memposting kode untuk solusi tabbar saya besok.

@Jakar510

AppShell.xaml

<TabBar Route="tabBar">
        <Tab 
            x:Name="myTab" 
            Route="tab1"
            Icon="tab_icon1.png">
            <ShellContent 
                x:Name="shellStart"
                Route="route1A" 
                Title="title" 
                ContentTemplate="{DataTemplate view:Page1A}" />
        </Tab>
        <Tab 
            Route="tab2"
            Icon="tab_icon2.png">
            <ShellContent 
                Route="route2" 
                Title="title2" 
                ContentTemplate="{DataTemplate view:Page2}" />
        </Tab>
        </Tab>
        <Tab 
            Route="tab3"
            Icon="tab_icon3.png">
            <ShellContent 
                Route="route3" 
                Title="title3" 
                ContentTemplate="{DataTemplate view:Page3}" />
        </Tab>
    </TabBar>

AppShell.xaml.cs

public ShellContent shell0;
public ShellContent shell1;
public ShellContent shell2;
public ShellContent shell3;
public static Tab tabLocal;

konstruktor

            tabLocal = myTab;
            shell0 = shellStart;
            shell1 = new ShellContent()
            {
                Content = new Page1B(),
                Title = "",
                Route = ""
            };
            shell2 = .... Page1C() ...
            shell3 = .... Page1D() ...
            ...

Beralih halaman 0 ke 1

AppShell.tabLocal.Items.Add(shell1);
AppShell.tabLocal.Items.Remove(shell0);

Mungkin Anda memerlukan dua metode ini untuk menangani navigasi Anda

protected async override void OnNavigating(ShellNavigatingEventArgs args)
protected override void OnNavigated(ShellNavigatedEventArgs args)

Saya harap ini membantu Anda. Tolong beri saya catatan jika ini berhasil untuk Anda.

Saya akan mengerjakan ini untuk 4.7/4.8

Saya memperbarui spek jika ada yang ingin berkomentar

@PureWeen Tidak, tapi saya harap ketika Anda mulai mengerjakan ini, Anda memposting aliran kedutan sehingga kami dapat memastikan untuk mendengarkan 👍

Saya akan mengerjakan ini untuk 4.7/4.8
Saya memperbarui spek jika ada yang ingin berkomentar

Maaf untuk pertanyaan bodoh: di mana saya dapat menemukan dan membaca spesifikasinya?

@narandini Saya baru saja memperbarui deskripsi tentang masalah ini dengan spesifikasi

Ya terima kasih!

Saya percaya saya menemukan solusi untuk ini (untuk saat ini).
Melakukan hal ini:

  • beri nama flyoutite atau item Anda, mis
    <FlyoutItem Title="Self Review" x:Name="fiSelf"> <FlyoutItem.Icon> <FontImageSource FontFamily="{StaticResource sapcIconFont}" Glyph="{StaticResource IconUser}" Color="{StaticResource IconColor}"/> </FlyoutItem.Icon> <ShellContent> <viewsAssess:StartSelfPage /> </ShellContent> </FlyoutItem>

  • timpa OnBindingContextChanged di AppShell.cs , dan tambahkan kode untuk memeriksa kondisi untuk disembunyikan dan ditampilkan lalu panggil metode Clear pada properti Items dari flyitem
    protected override void OnBindingContextChanged() { base.OnBindingContextChanged(); if(App.IsIntern) { fiAssess.Items.Clear(); fiPeer.Items.Clear(); fiSelf.Items.Clear(); fiVerifications.Items.Clear(); } }

bekerja untuk saya

ditutup oleh #10980

Ini masih berperilaku aneh, setiap kali kita secara dinamis mengubah properti IsVisible pada BaseShellItem, setiap saat gaya ShellContent akan hilang. Mendorong halaman di atas konten shell dan kemudian muncul tampaknya memperbaikinya.

Contohnya adalah memiliki 2 halaman, konten Shell X memiliki tombol yang mengubah properti boolean yang diikat ke properti IsVisible pada konten Shell Y

@GeorgeVelikov dapatkah Anda mencatat masalah?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat