Я написал демонстрацию о скрытии элемента TCPNumber в элементах списка группы Y, где значение типа файла равно 2.
Прежде всего, я установил 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; }
}
Надеждаэто может помочь вам.