【发布时间】:2017-02-08 00:28:05
【问题描述】:
我最近一直在为一个项目使用 Xamarin Forms,并且我一直在使用 TableView 来显示从 web api 检索到的记录的详细信息。有时,某些细节不存在,所以我想隐藏显示信息的部分。
但是,我找不到隐藏 TableSection 的方法。
这里有一些 XAML:
<TableView>
<TableRoot>
...
<!--Contact info-->
<TableSection IsVisible="{Binding HasContact}" Title="Contact">
<!--Contact name-->
<TextCell Text="{Binding ContactName}" Detail="Primary contact" />
<!--Phone-->
<TextCell Text="Phone"
Detail="{Binding FormattedContactPhoneNumber}"
Command="{Binding BindingContext.DialPhoneCommand, Source={x:Reference MainGrid}}"
CommandParameter="{Binding ContactPhoneNumber}"/>
<!--Email-->
<TextCell Text="Email"
Detail="{Binding ContactEmail}"
Command="{Binding BindingContext.SendEmailCommand, Source={x:Reference MainGrid}}"
CommandParameter="{Binding ContactEmail}"/>
</TableSection>
</TableRoot>
</TableView>
显然,IsVisible 属性不起作用并引发异常,因为它不存在(它存在于标签等其他元素上)。我还尝试使用VisualElement.IsVisible,它会抛出一个无效的强制转换异常。那么有什么办法可以隐藏这个部分吗?
如果没有办法做到这一点,也许我需要走一条更脏的路并使用单独的 TableViews(我可以使用 VisualElement.IsVisible):(
【问题讨论】:
-
恐怕我没有尽可能多地使用 xamarin,但如果它带有通用 xaml 标准,它将是
Visibility属性,您可以将您的 bool 通过转换器用于可以是Visible或Collapsed作为参数。 IE;Visibility="Collapsed" -
谢谢,但是,Xamarin Forms 使用自己的自定义控件,并且 Visibility 属性不可用。表单在运行时被翻译成原生控件。
-
真的吗?好吧,这令人失望。想知道自从 MS 购买它们后,他们是否可能会尝试采用一些长期的标准约定。当我有时间时,将不得不更多地修补 xamarin。干杯
标签: xaml mvvm xamarin xamarin.forms