XAML中的水平滚动视图
我有一个MyClass的列表: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
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上做了一些谷歌搜索)