繁体   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