Xaml ItemsControl中的StackPanel:Netflix海报样式
在放映电影海报时,我希望采用类似Netflix的布局: 类别 Poster1 Poster2 Poster3 第2类 Poster1 Poster2 Poster3 我想到了这个:Xaml ItemsControl中的StackPanel:Netflix海报样式,xaml,uwp-xaml,Xaml,Uwp Xaml,在放映电影海报时,我希望采用类似Netflix的布局: 类别 Poster1 Poster2 Poster3 第2类 Poster1 Poster2 Poster3 我想到了这个: <ItemsControl Name="dataControl" ItemsSource="{Binding}"> <ItemsControl.ItemTemplate> <DataTemplate> <
<ItemsControl Name="dataControl" ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Width="100" Height="50" FontSize="14" Text="{Binding Key}"></TextBlock>
<ItemsControl Name="dataControl" ItemsSource="{Binding Value}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Button Content="{Binding MovieName}" Width="100" Height="100"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
控件的绑定方式如下:
dataControl.ItemsSource = Source;
按照现在的代码方式,您告诉每个按钮位于其自身水平对齐的
StackPanel
内。您需要在一个水平堆叠面板中包含所有按钮。试着做
<TextBlock Width="100" Height="50" FontSize="14" Text="{Binding Key}"></TextBlock>
<StackPanel Orientation="Horizontal">
<ItemsControl Name="dataControl" ItemsSource="{Binding Value}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Button Content="{Binding MovieName}" Width="100" Height="100"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
按照当前代码的方式,您告诉每个按钮位于其自身水平对齐的堆栈面板内。您需要在一个水平堆叠面板中包含所有按钮。试着做
<TextBlock Width="100" Height="50" FontSize="14" Text="{Binding Key}"></TextBlock>
<StackPanel Orientation="Horizontal">
<ItemsControl Name="dataControl" ItemsSource="{Binding Value}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Button Content="{Binding MovieName}" Width="100" Height="100"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
要将“电影海报”水平对齐,您需要如下更改
<ItemsControl Name="dataControl" ItemsSource="{Binding Value}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="{Binding MovieName}" Width="100" Height="100"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
用于定义用于项目布局的面板。的默认值是指定的。对于,它默认设置为垂直。这就是您的项目垂直对齐的原因
下面的StackPanel
控制每个项目内部的布局,而不是ItemsControl
中项目的布局。因此,将其方向设置为水平方向将不起作用。由于每个项目只有一个按钮
,您只需注释掉堆栈面板
即可水平对齐“电影海报”,您需要如下更改
<ItemsControl Name="dataControl" ItemsSource="{Binding Value}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="{Binding MovieName}" Width="100" Height="100"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
用于定义用于项目布局的面板。的默认值是指定的。对于,它默认设置为垂直。这就是您的项目垂直对齐的原因
下面的StackPanel
控制每个项目内部的布局,而不是ItemsControl
中项目的布局。因此,将其方向设置为水平方向将不起作用。由于每个项目只有一个按钮
,您可以只注释掉堆栈面板
遗憾的是结果是一样的,我编辑了添加更多信息的问题。遗憾的是,结果是一样的,我编辑了添加更多信息的问题。我在中的回答可能会有所帮助,尽管它在WP8.1中,但概念是相似的。当存在大量数据时,您当前所做的将很困难,因为ItemsControl不支持虚拟化。我在中的回答可能会有所帮助,尽管它在WP8.1中,但概念类似。由于ItemsControl不支持虚拟化,因此当存在大量数据时,您当前所做的将很困难。