xaml之如果 ListView 中的数据为空,则隐藏行

kevingrace 阅读:124 2024-07-26 13:47:55 评论:0

如果注释为空或空字符串,我如何删除该行?

<ListView.ItemTemplate> 
    <DataTemplate> 
        <ViewCell> 
            <Grid> 
                <Grid.RowDefinitions> 
                    <RowDefinition Height="Auto" /> 
                    <RowDefinition Height="Auto" /> 
                </Grid.RowDefinitions> 
                <Grid.ColumnDefinitions> 
                    <ColumnDefinition Width="30*" /> 
                    <ColumnDefinition Width="50*" /> 
                </Grid.ColumnDefinitions> 
                <Label Text="{Binding EntryDate}" Grid.Column="0" Grid.Row="0"></Label> 
                <Label Text="{Binding Sleep}" Grid.Column="1" Grid.Row="0"></Label> 
                <Label Text="{Binding Comment}" Grid.Column="0" Grid.ColumnSpan="4"  
                       Grid.Row="1"></Label> 
            </Grid>                     
        </ViewCell>                 
    </DataTemplate>             
</ListView.ItemTemplate> 

请您参考如下方法:

这是使用 ValueConverter 的适当情况。

您需要做的就是创建一个这样的转换器:

namespace App.Converters 
{ 
    public class TextToBoolConverter : IValueConverter 
    { 
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
        { 
            if(value != null) 
                if (!(value is string)) return true; 
            return string.IsNullOrWhiteSpace(value as string) ? false : true; 
        } 
 
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
        { 
            throw new NotImplementedException(); 
        } 
    } 
} 

并在 Label 的 IsVisible 属性上使用它:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
             xmlns:converters="clr-namespace:App.Converters" 
             x:Class="App.Views.SamplePage"> 
    <ContentPage.Resources> 
        <ResourceDictionary> 
            <converters:TextToBoolConverter x:Key="TextToBoolConverter" /> 
        </ResourceDictionary> 
    </ContentPage.Resources> 
    <Grid> 
        <Grid.RowDefinitions> 
            <RowDefinition Height="Auto" /> 
            <RowDefinition Height="Auto" /> 
        </Grid.RowDefinitions> 
        <Grid.ColumnDefinitions> 
            <ColumnDefinition Width="30*" /> 
            <ColumnDefinition Width="50*" /> 
        </Grid.ColumnDefinitions> 
        <Label Text="{Binding EntryDate}" Grid.Column="0" Grid.Row="0"></Label> 
        <Label Text="{Binding Sleep}" Grid.Column="1" Grid.Row="0"></Label> 
        <Label Text="{Binding Comment}" Grid.Column="0" Grid.ColumnSpan="4"  
               Grid.Row="1" 
               IsVisible={Binding Comment, Converter={StaticResource TextToBoolConverter}}/> 
    </Grid>            
</ContentPage> 

因此您可以在任何需要的地方重复使用它。


标签:程序员
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号