[英]Hiding a tab in Xamarin.Forms using Prism framework
我正在開發一個使用MVVM模式和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”,似乎沒有做任何事情。
有沒有辦法在不破壞MVVM的情況下使用Xamarin(或Prism for Xamarin)中的布爾值從UI中隱藏Tab?
您可能想查看Prism Samples 。 TabbedNavigation
示例演示了如何使用INavigatingAware
或IEventAggregator
初始化選項卡式子IEventAggregator
,以及在運行時動態添加選項卡。 如果您需要更精細的控制,例如您的某個子頁面的ViewModel中的值,以確定是否應顯示其他頁面,那么您可以使用它來使用IEventAggregator
發布事件並在TabbedPage中訂閱該事件處理添加或刪除頁面。
不幸的是, IsVisible
和IsEnabled
實際上並不像你希望的那樣在TabbedPage中工作。 因此,實現此目的的唯一方法是實際操作TabbedPage的Children,直接從集合中推送或彈出它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.