2017-04-18 9 views
1

MVVM 패턴과 프리즘을 사용하는 Xamarin Forms 프로젝트에서 작업하고 있습니다.프리즘 프레임 워크를 사용하여 Xamarin.Forms의 탭을 숨기기

제 문제는 bool을 기반으로 탭 페이지의 탭을 숨길 수 있어야한다는 것입니다. "IsVisible"이라는 XAML의 바인딩 가능한 속성이 있습니다.이 속성은 사용자가 탭을 숨기지 만 탭이 계속 표시되지만 선택하면 빈 페이지가 표시됩니다.

현재 내 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)에서 부울 값을 사용하여 MVVM을 손상시키지 않고 UI에서 Tab을 숨기는 방법이 있습니까?

답변

0

Prism Samples을 확인하시기 바랍니다. TabbedNavigation 샘플은 탭이있는 하위 항목을 INavigatingAware 또는 IEventAggregator으로 초기화하는 방법과 런타임에 동적으로 탭을 추가하는 방법을 보여줍니다. 다른 페이지를 표시할지 여부를 결정하는 하위 페이지 중 하나의 ViewModel 값과 같이 더 세밀하게 제어해야하는 경우이를 사용하여 IEventAggregator과 함께 이벤트를 게시하고 TabbedPage에서 해당 이벤트를 구독 할 수 있습니다 페이지 추가 또는 제거를 처리합니다.

불행히도 IsVisibleIsEnabled은 실제로 원하는 방식으로 Tabbed 페이지에서 작동하지 않습니다. 따라서이 작업을 수행 할 수있는 유일한 방법은 실제로 Tabbed의 Children을 컬렉션에서 직접 푸시하거나 터뜨리는 것입니다.

+0

감사합니다. 올바른 방향입니다. 나는 그 샘플을 가지고 있지만 그들이 최근에 업데이트되었다는 것을 모르고있었습니다. 재생 중 탭을 동적으로 추가하거나 탭 (첫 번째 탭이 아님)을 기본 탭으로 표시 할 수 없었습니다. 다시 한 번 감사드립니다. –