xaml - 将 true/false 替换为特定列表视图和特定列中的不同文本或复选标记
问题描述
我得到listview
如下图。我正在寻找一种方法来以某种方式代替true/false
展示其他text
地方或地方check marks
。我怎样才能做到这一点?
重要说明:我有很多页面都有不同的列表视图,其中也出现了真/假。我希望能够选择为哪个列表视图定义该解决方案以及我可以选择特定列表视图和列的最佳选择(当然,如果可能的话)
呸呸呸
放置 True/False 值的特定部分 (BottleIsFilled):
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label
Grid.Column="0"
HorizontalOptions="Fill"
HorizontalTextAlignment="Center"
Text="{Binding BottleTypeName}" />
<Label
Grid.Column="1"
HorizontalOptions="Fill"
HorizontalTextAlignment="Center"
Text="{Binding BottleIsFilled}" />
<Label
Grid.Column="2"
HorizontalOptions="Fill"
HorizontalTextAlignment="Center"
Text="{Binding Amount}" />
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
解决方案
正如 Jason 建议使用BoolToObjectConverter
XamarinCommunityToolkit包
- 在所有项目(共享和平台)上安装 nuget 包。
- 为这个包添加 xaml 命名空间
xmlns:xct="http://xamarin.com/schemas/2020/toolkit"
- 实例化并使用 BoolToObjectConverter
似乎每个页面的一个常见实例适合您的用例。
<ContentPage.Resources>
<xct:BoolToObjectConverter x:Name="BoolToObjectConverter" TrueObject="yes" FalseObject="no"/>
</ContentPage.Resources>
...
<Label
Grid.Column="1"
HorizontalOptions="Fill"
HorizontalTextAlignment="Center"
Text="{Binding BottleIsFilled, Converter={StaticResource BoolToObjectConverter}}"/>
文档
https://docs.microsoft.com/en-us/xamarin/community-toolkit/converters/booltoobjectconverter
笔记
如果您遇到有关命名空间的错误,请尝试键入<BoolToObjectConverter />
并将光标放在其上,当您单击“ctrl+”时,on vs intelisense 应该会突出显示它并建议并为您应用正确的命名空间。或者 ctrl+enter。
推荐阅读
- mysql - 查找行号,加 1,然后替换字符串
- excel - 自定义将特定单元格值排序到范围底部
- angular - 是否可以从子组件访问父组件 ngOnInit 方法?
- vb.net - 杀死 Chrome 浏览器进程
- javascript - 完美滚动条加载滚动到按钮并使用无限滚动
- r - 在 R 中循环多个变量
- ios - UIDocument 在 revertToContentsOfURL:completionHandler 崩溃:“尝试还原尚未打开的文档”
- c# - 如何显示列表
在列表框中? - java - Apache Mina SSHD 端口转发,如 NGROK
- java - Xamarin 中的错误“选项 --boot-class-path 不允许使用目标 12”