添付プロパティを提供して、ユーザーがフライアウトとタブバーのどちらに表示されるかをより直接的に定義できるようにします。
ユーザーがFlyoutDisplayOptions="AsMultipleItems"
を使用するときに、親をヘッダーとして表示することを選択できるように、オプションを追加する必要があります。 拡張コントロールを使用すると、それを設定として追加することもできます。
`` `C#
FlyoutItem.IsVisible // BP添付プロパティ
Tab.IsVisible // BP添付プロパティ
BaseShellItem.IsVisible // BP(プロパティがアタッチされていない)
## 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>
ユーザーは、画面上のどのタブも反映しないフライアウトを望んでいます。
<MenuItem title="item 1 "/>
<MenuItem title="item 2" />
<MenuItem title="item 3" />
<TabBar Shell.FlyoutBehavior="Flyout" FlyoutItem.IsVisible="False">
<Tab>
</Tab>
</TabBar>
3つのフライアウトアイテムをレンダリングします
<FlyoutItem title="item 1 " />
<FlyoutItem title="item 2" />
<ShellContent title="Content" FlyoutItem.IsVisible="False" />
ShellContent要素を使用している場合でも、2つのフライアウトアイテムをレンダリングします
私が念頭に置いているユースケースは、ユーザーがアプリをプレミアムにアップグレードするためのハンバーガーメニューの項目を用意することです。 ユーザーがアップグレードすると、アイテムは表示されなくなります。
親:#2415
これに関する更新はありますか?
@PureWeen Xam Dev Summitでこれを使用しているのを見ましたが、これはPreか何かでまだですか?
もう1つの使用例は、1つの機能セット(頻繁に使用される)が下部のタブバーに表示され、別の機能セット(設定、購入の復元、ヘルプなど)がハンバーガーメニューからアクセスできるようにすることです。 これがすでに可能である場合は、私に知らせてください。
これに関する最新情報を入手できますか? (本当に、本当にこれが欲しいです!)
バンプ
本当にこれが必要です
これに関する更新はありますか?
すべてのアップデート? 本当に必要です。
これに関する更新はありますか?
非常に小さなアプリを作成していない限り、シェルはほとんど役に立たないようです。 これがないと、アクセス許可を設定したり、フライアウトで不要なページを非表示にしたりすることはできません。 これは今のところ優先事項ではないのですか?
あなたは正しい@brepetti
ここで何かが足りないのではないかと思います...
@rodrigojuarez @brepetti
面白い部分は去年のXDSで、まもなく登場するアイテムとして議論されました...彼らがそれを見せたところまで。
ナビゲーションスタックの処理方法が原因で、これはおそらくブロッカーになってしまったと思います。 XDSで示されている例は、ほとんどがカスタム/再構築されたナビゲーションスタックを使用していたことを私は知っているからです。
ShellContentアイテムを手動で作成(追加、削除)することで、手動の回避策を使用してTabBarトップタブで機能させることができました。 Xamarin.Forms 4.6では、iOSでも機能するようになりました(1日前の4.6で修正されました)。
ハンバーガーメニューでも機能するはずですか?
@ malte1989ええ、シェルのビジュアルツリーにあるシェルアイテム(別名)について話しています。
@ malte1989サンプルコードを教えていただけますか?
@ malte1989サンプルコードを教えていただけますか?
確かに、明日、タブバーソリューションのコードを投稿します。
@ 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;
コンストラクタ
tabLocal = myTab;
shell0 = shellStart;
shell1 = new ShellContent()
{
Content = new Page1B(),
Title = "",
Route = ""
};
shell2 = .... Page1C() ...
shell3 = .... Page1D() ...
...
ページ0から1への切り替え
AppShell.tabLocal.Items.Add(shell1);
AppShell.tabLocal.Items.Remove(shell0);
多分あなたはあなたのナビゲーションを扱うためにこれらの2つの方法を必要とします
protected async override void OnNavigating(ShellNavigatingEventArgs args)
protected override void OnNavigated(ShellNavigatedEventArgs args)
これがお役に立てば幸いです。 これがうまくいくかどうか、私にメモさせてください。
4.7 /4.8でこれに取り組んでいきます
誰かがコメントしたい場合は、仕様を更新しました
@PureWeenいいえ。ただし、これに取り組んでいるときに、Twitchストリームを投稿して、確実に調整できるようにしてください👍
4.7 /4.8でこれに取り組んでいきます
誰かがコメントしたい場合は、仕様を更新しました
ばかげた質問で申し訳ありません:仕様を見つけて読むことができる場所はどこですか?
@ncarandiniこの問題の説明を仕様で更新しました
はい、ありがとう!
私はこれの回避策を見つけたと思います(今のところ)。
これを行う:
フライアウトアイテムに名前を付けます。例:
<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>
AppShell.csのOnBindingContextChangedをオーバーライドし、条件をチェックして非表示および表示するコードを追加してから、flyitemのItemsプロパティでClearメソッドを呼び出します。
protected override void OnBindingContextChanged()
{
base.OnBindingContextChanged();
if(App.IsIntern)
{
fiAssess.Items.Clear();
fiPeer.Items.Clear();
fiSelf.Items.Clear();
fiVerifications.Items.Clear();
}
}
私のために働く
#10980で閉鎖
これはまだ奇妙な動作をしています。BaseShellItemのIsVisibleプロパティを動的に変更すると、ShellContentのスタイルが失われることがあります。 シェルコンテンツの上にページをプッシュしてからポップすると、修正されたようです。
例として、2ページがあり、シェルコンテンツXには、シェルコンテンツYのIsVisibleプロパティにバインドされているブールプロパティを変更するボタンがあります。
@GeorgeVelikov問題をログに記録できますか?
最も参考になるコメント
これに関する最新情報を入手できますか? (本当に、本当にこれが欲しいです!)