2017-04-18 3 views
1

私はMVVMパターンとPrismを使用するXamarin Formsプロジェクトを作成しています。Prismフレームワークを使用してXamarin.Formsのタブを非表示にする

私の問題は、タブページのタブをboolに基づいて非表示にする必要があることです。 XAMLには "IsVisible"というバインド可能なプロパティがありますが、これはユーザーからタブを隠すと仮定していますが、タブは表示されますが、選択すると空白のページが表示されます。

は、現在、私のXAMLは、もともと私はちょうど使用し、問題を解決するために、この

<?xml version="1.0" encoding="utf-8"?> 
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms" 
     xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
     xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms" 
     xmlns:local="clr-namespace:com.XXXXXXX" 
     prism:ViewModelLocator.AutowireViewModel="True" 

     BackgroundColor="White" 
     x:Class="com.XXXXXXXXXX.EditChargePage" 
     Title="{Binding Title}"> 

<local:EditChargeDetailsPage Title="Details" /> 
<local:EditChargeTrackingPage Title="Tracking" IsVisible="{Binding TabContext.HasTracking}" IsEnabled="{Binding TabContext.HasTracking}"/> 
<local:EditChargeNotesPage Title="Notes" /> 


</TabbedPage> 

のように見える「のisVisible」、それは私が何もしていないようでした「でIsEnabled」を追加期待通りに動作しなかったとき。

Xamarin(またはXamarinのPrism)のブール値を使用してUIからTabを非表示にする方法はありますか?

答えて

0

Prism Samplesをチェックしてみるとよいでしょう。 TabbedNavigationサンプルでは、​​タブ付きの子をINavigatingAwareまたはIEventAggregatorで初期化する方法と、実行時にタブを動的に追加する方法を示します。他のページを表示するかどうかを決定するChild PagesのViewModelの値など、細かい制御が必要な場合は、これを使用してIEventAggregatorのイベントを公開し、そのTabbedPageでそのイベントを購読することができますページの追加または削除を処理します。

残念ながらIsVisibleIsEnabledは、あなたが望んでいた方法でTabbedページ内で実際には動作しません。したがって、これを実現する唯一の方法は、TabbedPageの子を実際に操作してコレクションから直接プッシュまたはポップすることです。

+0

ありがとうございます、それは間違いなく正しい方向です。私はそれらのサンプルを持っていますが、最近更新されたことを知らなかった。 再生中タブを動的に追加したり、最初のタブではないタブをデフォルトのタブとして表示することができませんでした。 もう一度おねがいします –

関連する問題