我在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的第一行的方法,但是没有成功。 有帮助吗?
答案 0 :(得分:2)
我写了一个有关在文件类型值为2的Y组列表项中隐藏TCPNumber项的演示。
首先,我在列表视图项的不同行中设置了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; }
}
希望它可以为您提供帮助。