XAML中的水平滚动视图

XAML中的水平滚动视图,xaml,xamarin,Xaml,Xamarin,我有一个MyClass的列表: public class MyClass { public int Id { get; set; } public string Name { get; set; } public string Type { get; set; } } 我想在水平滚动视图中显示此列表。我是用XAML做的,很难找到例子。我现在明白了: <ScrollView Orien

我有一个MyClass的列表:

 public class MyClass
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public string Type { get; set; }
        }
我想在水平滚动视图中显示此列表。我是用XAML做的,很难找到例子。我现在明白了:

<ScrollView Orientation="Horizontal">
      <ListView x:Name="MyClassList"
                  ItemsSource="{Binding MyClassList}"
                    RowHeight="210">
    <ListView.ItemTemplate>
      <DataTemplate>
        <ViewCell>
          <Grid Padding="5">
            <Grid.RowDefinitions>
              <RowDefinition Height="20"></RowDefinition>
              <RowDefinition Height="20"></RowDefinition>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
              <ColumnDefinition Width="1*"></ColumnDefinition>
              <ColumnDefinition Width="1*"></ColumnDefinition>
            </Grid.ColumnDefinitions>

            <Label Grid.Row="0" Grid.Column="0" Text="Name:" LineBreakMode="TailTruncation"></Label>
            <Label Grid.Row="0" Grid.Column="1" Text="{Binding Name}" LineBreakMode="TailTruncation"></Label>
            <Label Grid.Row="1" Grid.Column="0" Text="Type:" LineBreakMode="TailTruncation"></Label>
            <Label Grid.Row="1" Grid.Column="1" Text="{Binding Type}" LineBreakMode="TailTruncation"></Label>

          </Grid>
        </ViewCell>
      </DataTemplate>
    </ListView.ItemTemplate>
  </ListView>
    </ScrollView>


但这是一个垂直的列表。有关于如何水平滚动此列表的提示吗?

不完全确定我是否理解此问题。我的解释是,您希望ListView本身水平而不是垂直地添加元素

这可以通过将ListViews ItemsPanel设置为水平StackPanel来实现

试试这个:

<ScrollView Orientation="Horizontal">
    <ListView x:Name="MyClassList"
                  ItemsSource="{Binding MyClassList}"
                  RowHeight="210">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Horizontal"></StackPanel>
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <Grid Padding="5">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="20"></RowDefinition>
                            <RowDefinition Height="20"></RowDefinition>
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="1*"></ColumnDefinition>
                            <ColumnDefinition Width="1*"></ColumnDefinition>
                        </Grid.ColumnDefinitions>

                        <Label Grid.Row="0" Grid.Column="0" Text="Name:" LineBreakMode="TailTruncation"></Label>
                        <Label Grid.Row="0" Grid.Column="1" Text="{Binding Name}" LineBreakMode="TailTruncation"></Label>
                        <Label Grid.Row="1" Grid.Column="0" Text="Type:" LineBreakMode="TailTruncation"></Label>
                        <Label Grid.Row="1" Grid.Column="1" Text="{Binding Type}" LineBreakMode="TailTruncation"></Label>

                    </Grid>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</ScrollView>


这已经通过一个名为ItemsView的自定义类解决了(不要与Xamarin的ItemsView混淆,该类用于在ListView中进行数据模板化),它实现了ScrollView/StackPanel模式。请查看代码:

谢谢您的回答。在本例中,您建议我将网格放在stackpanel的内部?这可能是MSXAML和XAML之间的差异。这对我不起作用,但谢谢你。你可能是对的,我没有使用XamarinXAML。但是您不应该将网格放在stackpanel中,而是保持ItemTemplate的原样。。。我会更新完整的代码,如果你想尝试一下谢谢,不幸的是它在Xamarin中似乎不是合法的Xaml。好吧,它看起来有点奇怪,也许可以通过一些调整来修复。希望你能找到一个好的解决方案最后一个想法。。。它是否与a而不是StackPanel一起工作?(在Xamarin XAML上做了一些谷歌搜索)