首页 > 解决方案 > 将 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>

标签: xamlxamarinxamarin.forms

解决方案


正如 Jason 建议使用BoolToObjectConverterXamarinCommunityToolkit

  1. 在所有项目(共享和平台)上安装 nuget 包。
  2. 为这个包添加 xaml 命名空间xmlns:xct="http://xamarin.com/schemas/2020/toolkit"
  3. 实例化并使用 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。


推荐阅读