Xamarin 如何在我的布局中创建滚动视图

Xamarin 如何在我的布局中创建滚动视图,xamarin,xamarin.forms,Xamarin,Xamarin.forms,我希望我的ScrollView加入我的StackLayout和我的列表,这样我可以向下滚动它,我看到的一个例子是下面的一个,但我无法在我的命令下实现它 现在的方式是从列表中的scrowview 您不应该将ListView放在ScrollView中,因为它们都实现了滚动。您应该做的是使用ListView的模板将网格放在那里。这样,它将与ListView一起滚动 <?xml version="1.0" encoding="utf-8" ?> <ContentPage

我希望我的ScrollView加入我的StackLayout和我的列表,这样我可以向下滚动它,我看到的一个例子是下面的一个,但我无法在我的命令下实现它

现在的方式是从列表中的scrowview



您不应该将ListView放在ScrollView中,因为它们都实现了滚动。您应该做的是使用ListView的模板将网格放在那里。这样,它将与ListView一起滚动

  <?xml version="1.0" encoding="utf-8" ?>
  <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    NavigationPage.TitleIcon="logoD">
    <ListView x:Name="list" ItemsSource="{Binding list}">
      <ListView.HeaderTemplate>
        <DataTemplate>
          <Grid>
            <Grid.RowDefinitions>
              <RowDefinition Height="*"/>
              <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>
            <Image Grid.RowSpan="2" Scale="1.0" Aspect="AspectFill" VerticalOptions="FillAndExpand" HeightRequest="250">
              <Image.Source>
                <UriImageSource Uri="{Binding img}" CacheValidity="5" CachingEnabled="True"/>
              </Image.Source>
              <Image.GestureRecognizers>
                <TapGestureRecognizer Tapped="OnTapped" />
              </Image.GestureRecognizers>
            </Image>
          </Grid>
        </DataTemplate
      </ListView.HeaderTemplate>
      <ListView.ItemTemplate>
        <DataTemplate>
          <ViewCell>
            <Grid Padding="5">
              <Grid.ColumnDefinitions>
                <ColumnDefinition Width="80"/>
                  <ColumnDefinition Width="5"/>
                  <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
              <StackLayout Grid.Column="2" Spacing="4"  VerticalOptions="Center">
                <Label Text="{Binding Categoria}" TextColor="#38B6AB"  FontSize="Small" LineBreakMode="NoWrap"/>
                <Label Text="{Binding Data}" TextColor="#666666" FontSize="Small" LineBreakMode="NoWrap"/>
                <Label Text="{Binding hora}" TextColor="#474747" Font="Bold" FontSize="Small" LineBreakMode="WordWrap"/>
              </StackLayout>
            </Grid>
          </ViewCell>
        </DataTemplate>
      </ListView.ItemTemplate>
    </ListView>
  </ContentPage>


我能够用同样的示例命令实现

<ContentPage.Content>
  <ListView ItemsSource="{Binding MonkeysGrouped}"
            ItemTapped="Handle_ItemTapped"
            ItemSelected="Handle_ItemSelected"
            HasUnevenRows="true"
            GroupShortNameBinding = "{Binding Key}"
            IsGroupingEnabled = "true"
            GroupDisplayBinding = "{Binding Key}">
     <ListView.Header>
      <cv:CarouselView x:Name="CarouselZoos" ItemsSource="{Binding Path=BindingContext.Zoos, Source={x:Reference MonkeysPage}}" HeightRequest="200">
        <cv:CarouselView.ItemTemplate>
          <DataTemplate>
            <Grid>
              <Grid.RowDefinitions>
                <RowDefinition Height="*"/>
                <RowDefinition Height="Auto"/>
              </Grid.RowDefinitions>
              <Image Grid.RowSpan="2" Aspect="AspectFill" Source="{Binding ImageUrl}"/>
              <StackLayout Grid.Row="1" BackgroundColor="#80000000" Padding="12">
                  <Label TextColor="White" Text="{Binding Name}" FontSize="16" HorizontalOptions="Center" VerticalOptions="CenterAndExpand"/>
              </StackLayout>
            </Grid>
          </DataTemplate>
        </cv:CarouselView.ItemTemplate>
      </cv:CarouselView>
    </ListView.Header>
    <ListView.ItemTemplate>
      <DataTemplate>
        <ViewCell>
          <Grid Padding="10" RowSpacing="10" ColumnSpacing="10">
            <Grid.RowDefinitions>
              <RowDefinition Height="Auto"/>
              <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
              <ColumnDefinition Width="Auto"/>
              <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>

            <controls:CircleImage
                   BorderColor="Aqua"
                   BorderThickness="3"
                   HeightRequest="66"
                   HorizontalOptions="CenterAndExpand"
                   VerticalOptions="CenterAndExpand"
                   Aspect="AspectFill"
                   WidthRequest="66"
                   Grid.RowSpan="2"
                   Source="{Binding Image}"/>
            <Label Grid.Column="1"
                   Text="{Binding Name}"
                   VerticalOptions="End"/>
            <Label Grid.Column="1"
                   Grid.Row="1"
                   VerticalOptions="Start"
                   Text="{Binding Location}"/>
          </Grid>
        </ViewCell>
      </DataTemplate>
    </ListView.ItemTemplate>
  </ListView>


您面临的问题是什么?我的StackLayout top没有进入scrowviewSomente listview suporta角色管理,StackLayout保持不变您不能在ScrollView中拥有listview,其中一个中处理的scroll事件隐藏了另一个处理程序,如您所见:可能重复,因此listview覆盖StackLayout,页面仅包含listview@José你在那里的堆栈布局与此无关,我将其删除。请使用当前代码重试。
<ContentPage.Content>
  <ListView ItemsSource="{Binding MonkeysGrouped}"
            ItemTapped="Handle_ItemTapped"
            ItemSelected="Handle_ItemSelected"
            HasUnevenRows="true"
            GroupShortNameBinding = "{Binding Key}"
            IsGroupingEnabled = "true"
            GroupDisplayBinding = "{Binding Key}">
     <ListView.Header>
      <cv:CarouselView x:Name="CarouselZoos" ItemsSource="{Binding Path=BindingContext.Zoos, Source={x:Reference MonkeysPage}}" HeightRequest="200">
        <cv:CarouselView.ItemTemplate>
          <DataTemplate>
            <Grid>
              <Grid.RowDefinitions>
                <RowDefinition Height="*"/>
                <RowDefinition Height="Auto"/>
              </Grid.RowDefinitions>
              <Image Grid.RowSpan="2" Aspect="AspectFill" Source="{Binding ImageUrl}"/>
              <StackLayout Grid.Row="1" BackgroundColor="#80000000" Padding="12">
                  <Label TextColor="White" Text="{Binding Name}" FontSize="16" HorizontalOptions="Center" VerticalOptions="CenterAndExpand"/>
              </StackLayout>
            </Grid>
          </DataTemplate>
        </cv:CarouselView.ItemTemplate>
      </cv:CarouselView>
    </ListView.Header>
    <ListView.ItemTemplate>
      <DataTemplate>
        <ViewCell>
          <Grid Padding="10" RowSpacing="10" ColumnSpacing="10">
            <Grid.RowDefinitions>
              <RowDefinition Height="Auto"/>
              <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
              <ColumnDefinition Width="Auto"/>
              <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>

            <controls:CircleImage
                   BorderColor="Aqua"
                   BorderThickness="3"
                   HeightRequest="66"
                   HorizontalOptions="CenterAndExpand"
                   VerticalOptions="CenterAndExpand"
                   Aspect="AspectFill"
                   WidthRequest="66"
                   Grid.RowSpan="2"
                   Source="{Binding Image}"/>
            <Label Grid.Column="1"
                   Text="{Binding Name}"
                   VerticalOptions="End"/>
            <Label Grid.Column="1"
                   Grid.Row="1"
                   VerticalOptions="Start"
                   Text="{Binding Location}"/>
          </Grid>
        </ViewCell>
      </DataTemplate>
    </ListView.ItemTemplate>
  </ListView>