이있는 경우는 성능 문제를 일으킬 수 있기 때문에 나는 확장 ListView에 사용을 권장하지 않습니다 더 많은 데이터. 구현하려는 경우
는하지만 이하의 절차 :
모델이 목록에서 목록처럼해야
public class Model1
{ public string Name { get; set; } public List<Model2> Model2Name { get; set; }
} public class Model2 { public string Name1 { get; set; } }
여기
를 코드를 입력
그런 다음 XAML 이제 당신이 모델을 포장해야
<ListView
HasUnevenRows="True"
ItemSelected="ItemSelected"
ItemsSource="{Binding DataList}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="9*"/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Text="{Binding Name}" YAlign="Center"/>
<ListView Grid.Row="1"
IsVisible="{Binding ListVisibility}"
SeparatorVisibility="None"
ItemSelected="ProductSelected"
HeightRequest="220"
BackgroundColor="#f2f2f2"
HorizontalOptions="FillAndExpand"
ItemsSource="{Binding Model.Products}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Label Grid.Row="0" Grid.Column="0" Text="{Binding Name}"
YAlign="Center" />
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
같이해야한다. 그것을 위해 당신은 다음과 같은 래퍼 클래스를 작성해야 다음과 같이
private List<WrapperModel<ProductCategoryModel>> dataList;
public List<WrapperModel<ProductCategoryModel>> DataList
{
get { return dataList; }
set
{
dataList = value;
OnPropertyChanged("DataList");
}
}
지금 목록을 초기화 :
public class WrapperModel<T> : INotifyPropertyChanged
{
public T Model { get; set; }
public event PropertyChangedEventHandler PropertyChanged = delegate { };
bool listVisibility = false;
public bool ListVisibility
{
get
{
return listVisibility;
}
set
{
if (listVisibility != value)
{
listVisibility = value;
PropertyChanged(this, new PropertyChangedEventArgs("ListVisibility"));
}
}
}
}
을 지금의 ViewModel에 다음과 같이, 당신은 당신의 목록 속성을 선언해야
foreach (var item in List)
{
DataList.Add(new WrapperModel<ModelName>
{ Model = item, ListVisibility = false});
}
이제 목록이 접힌 상태가됩니다. 당신이 의심이있는 경우
private void ItemSelected(object sender, SelectedItemChangedEventArgs e)
{
if (e.SelectedItem == null) return;
var tappedItem = (WrapperModel<ModelName>)e.SelectedItem;
tappedItem.ListVisibility = !tappedItem.ListVisibility;
((ListView)sender).SelectedItem = null;
}
은 나를
을 알려 주시기 바랍니다 다음과 같이 각 항목을 클릭에 내부 목록을 얻으려면, 당신은 ItemSelected을 설정해야