我的xaml中有一个分组的listView。
这是listView对象:
依恋:
public string TCPNumber { get; set; }
public string AttachmentName { get; set; }
public int FileType { get; set; }
这些组基于FileType值分别为X和Y。
每个列表项都显示以上3个项的值。
我想在文件类型值为2的Y组列表项中隐藏TCPNumber项目。
以下是我的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>
这是我试图隐藏ViewCell的第一行的方法,但是没有成功。
有什么帮助吗?
最佳答案
我编写了一个有关在文件类型值为2的Y组列表项中隐藏TCPNumber项的演示。
首先,我在listview项目的不同行中设置TCPNumber
,AttachmentName
,FileType
。当文件类型值为2时,第一行的TCPNumber
将被隐藏,如以下屏幕截图所示。
有我的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; }
}
希望它能对您有所帮助。
关于listview - 仅针对xamarin中的特定列表项在listview中隐藏行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55028661/