Скрыть строки в просмотре списка только для определенных элементов списка в xamarin - PullRequest
0 голосов
/ 06 марта 2019

У меня есть сгруппированный listView в моем xaml.

Вот объект listView:

Вложение:

public string TCPNumber { get; set; }
public string AttachmentName { get; set; }
public int FileType { get; set; }

Эти группы называются на основе X и Yпо значению FileType.Каждый элемент списка показывает значения для вышеуказанных 3 элементов.Я хочу скрыть элемент TCPNumber в элементах списка группы Y, где значение типа файла равно 2.

Ниже приведен мой xaml:

<ContentPage.Resources>
    <ResourceDictionary>
        <converter:TCPGridVisibleConverter x:Key="TCPGridVisible" />
    </ResourceDictionary>
<ContentPage.Resources>

<ListView x:Name="lvTCPs" HasUnevenRows="True"
<ListView.GroupHeaderTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout>
                            <Label Text="{Binding Key}"/>
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.GroupHeaderTemplate>
<ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <Grid>
                            <Grid.RowDefinitions>
<RowDefinition Height="{Binding Path=FileType, Source={x:Reference 
Name=AttachmentsTabPage}, Converter={StaticResource TCPGridVisible}}"> 
</RowDefinition>
                                <RowDefinition Height="Auto"></RowDefinition>
                                <RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="1*"></ColumnDefinition>
                                <ColumnDefinition Width="2*"></ColumnDefinition>
                            </Grid.ColumnDefinitions>
</ListView>

Это способ, которым я пытаюсь скрыть 1-ю строкуViewCell, но безуспешно.Любая помощь?

1 Ответ

2 голосов
/ 07 марта 2019

Я написал демонстрацию о скрытии элемента TCPNumber в элементах списка группы Y, где значение типа файла равно 2.

Прежде всего, я установил TCPNumber, AttachmentName, FileType в другой строке списка.вещь.когда значение типа файла равно 2, TCPNumber первой строки будет скрыто, как на следующем скриншоте. enter image description here

Это мой xaml.

   <StackLayout>
    <ListView x:Name="lvTCPs" HasUnevenRows="True" >
                <ListView.GroupHeaderTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <StackLayout>
                                <Label Text="KEY"/>
                            </StackLayout>
                        </ViewCell>
                    </DataTemplate>
                </ListView.GroupHeaderTemplate>

                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <Grid>
                                <Grid.RowDefinitions>

                                <RowDefinition Height="{Binding FileType, Converter={local:TCPGridVisibleConverter} }"></RowDefinition>
                                <RowDefinition Height="Auto"></RowDefinition>
                                <RowDefinition Height="Auto"></RowDefinition>
                                </Grid.RowDefinitions>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="1*"></ColumnDefinition>
                                    <ColumnDefinition Width="2*"></ColumnDefinition>
                                </Grid.ColumnDefinitions>


                        <Label Text="{Binding TCPNumber}" Grid.Row="0" Grid.Column="0" />
                        <Label Text="{Binding AttachmentName}" Grid.Row="1" Grid.Column="0" />
                        <Label Text="{Binding FileType}" Grid.Row="2" Grid.Column="0" />

                    </Grid>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>


</StackLayout>

есть мой TCPGridVisibleConverter.

    public class TCPGridVisibleConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (Equals(value, null))
            return new GridLength(0);

        var status = value.ToString();

        switch (status)
        {
            case ("2"):
                {
                    return new GridLength(0);
                }
            default:
                {

                    return new GridLength(1, GridUnitType.Auto);
                }
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return value;
    }
}

есть мои данные.

        List<TCP> list = new List<TCP>();
        list.Add(new TCP("1001","abc",2));
        list.Add(new TCP("1002", "bca", 1));
        list.Add(new TCP("1003", "bca", 2));
        list.Add(new TCP("1004", "abc", 1));
        list.Add(new TCP("1005", "abc", 1));
        lvTCPs.ItemsSource = list;

есть ваша модель.

    public class TCP
{
    public TCP(string TCPNumber, string AttachmentName, int FileType)
    {
        this.TCPNumber = TCPNumber;
        this.AttachmentName = AttachmentName;
        this.FileType = FileType;

    }
    public string TCPNumber { get; set; }
    public string AttachmentName { get; set; }
    public int FileType { get; set; }
}

Надеждаэто может помочь вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...