<ListView x:Name="GroupedView" GroupDisplayBinding="{Binding Header}" RowHeight="75" IsGroupingEnabled="True" HasUnevenRows="True">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout HeightRequest="{Binding height}">
<Label Text="{Binding MenuText}" TextColor="Green" >
<Label.GestureRecognizers>
<TapGestureRecognizer Tapped="TapGestureRecognizer_Tapped"/>
</Label.GestureRecognizers>
</Label>
<ScrollView>
<ListView ItemsSource="{Binding submenuitems}" HasUnevenRows="True" IsVisible="{Binding expand}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Margin="25,5,5,5" HeightRequest="{Binding height}">
<StackLayout.GestureRecognizers>
<TapGestureRecognizer Tapped="TapGestureRecognizer_Tapped_1"/>
</StackLayout.GestureRecognizers>
<Label Text="{Binding MenuText}" TextColor="DarkBlue"/>
<ScrollView>
<ListView ItemsSource="{Binding submenuitems_2}" HasUnevenRows="True" IsVisible="{Binding expand}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell >
<StackLayout Margin="35,10,5,5" HeightRequest="45">
<Label Text="{Binding MenuText}" TextColor="Red"/>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ScrollView>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ScrollView>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.GroupHeaderTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Horizontal" Padding="5,5,5,5" BackgroundColor="#E2F5F9">
<Button Image="{Binding StateIcon}" BackgroundColor="Transparent" BorderColor="Transparent" BorderWidth="0" Clicked="HeaderTapped" CommandParameter="{Binding .}"/>
<Label Text="{Binding Header}" TextColor="#005569" FontSize="15" VerticalOptions="Center"/>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.GroupHeaderTemplate>
</ListView>
ScrollView
或ListView
中嵌套ScrollView
不是一个好主意。在生产中使用时会有一些负面影响... - testing是的,这是可能的。我通过在StackPanel中嵌套StackPanel来实现了一个TreeView。
您可以在此处下载代码: https://github.com/AdaptSolutions/Xamarin.Forms-TreeView
以下是一些示例代码:
private void Render()
{
_SpacerBoxView.WidthRequest = IndentWidth;
if (Children == null || Children.Count == 0)
{
SetExpandButtonContent(BlankImagePath);
return;
}
SetExpandButtonContent(IsExpanded ? OpenImagePath : CollapseImagePath);
foreach (var item in Children)
{
item.Render();
}
}