簡體   English   中英

使用Prism框架隱藏Xamarin.Forms中的選項卡

[英]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示例演示了如何使用INavigatingAwareIEventAggregator初始化選項卡式子IEventAggregator ,以及在運行時動態添加選項卡。 如果您需要更精細的控制,例如您的某個子頁面的ViewModel中的值,以確定是否應顯示其他頁面,那么您可以使用它來使用IEventAggregator發布事件並在TabbedPage中訂閱該事件處理添加或刪除頁面。

不幸的是, IsVisibleIsEnabled實際上並不像你希望的那樣在TabbedPage中工作。 因此,實現此目的的唯一方法是實際操作TabbedPage的Children,直接從集合中推送或彈出它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM