正在将Windows Phone应用移植到Windows应用商店并尝试创建分组的ListView。开发中心中有一个good article,将列表分组是没有问题的。但是对于GroupStyle我有些不了解。
本文中的示例使用GroupStyleSelector导致以下GroupStyle:
<GroupStyle x:Key="listViewGroupStyle">
<GroupStyle.HeaderTemplate>
<DataTemplate>
<Grid Background="LightGray" >
<TextBlock Text='{Binding Key}' Foreground="Black" Margin="10"
Style="{StaticResource SubheaderTextBlockStyle}" />
</Grid>
</DataTemplate>
</GroupStyle.HeaderTemplate>
<GroupStyle.Panel>
<ItemsPanelTemplate>
<VariableSizedWrapGrid MaximumRowsOrColumns="3" Orientation="Horizontal"/>
</ItemsPanelTemplate>
</GroupStyle.Panel>
</GroupStyle>
GroupStyle.HeaderTemplate的目的很明显,并且可以在正在运行的应用程序中直接观察此模板的更改。
但是GroupStyle.Panel有什么用? docs说:
获取或设置一个模板,该模板创建用于布置项目的面板。
好的,但是无论我如何更改ItemsPanelTemplate(BackgroundColor,Orientation等),列表都不会在运行的应用程序中更改。
此外,还有GroupStyle.ContainerStyle,该示例中未使用。如果将其添加到GroupStyle,则对正在运行的应用程序中的列表也没有影响。
那么,GroupStyle.Panel和GroupStyle.ContainerStyle有什么用?如何正确使用?
最佳答案
我发现您也需要设置ListView的ItemsPanel。默认情况下,使用ItemsStackPanel,并且似乎不允许在分组的ListView中使用任何自定义面板。将ItemsPanel设置为VirtualizingStackPanel时,将应用自定义面板,但标题不再粘滞。似乎当前的ListView / ItemsStackPanel实现存在一些问题,并且由于我们没有源访问权限,因此很难说出什么。
<ListView
ItemsSource="{Binding Source={StaticResource namesSource}}"
>
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Key}" Foreground="Yellow" FontSize="{ThemeResource HubHeaderFontSize}" Margin="6" />
</DataTemplate>
</GroupStyle.HeaderTemplate>
<GroupStyle.Panel>
<ItemsPanelTemplate>
<controls:WrapPanel />
</ItemsPanelTemplate>
</GroupStyle.Panel>
</GroupStyle>
</ListView.GroupStyle>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<!--<ItemsWrapGrid FlowDirection="LeftToRight" Orientation="Vertical"/>-->
<VirtualizingStackPanel Orientation="Vertical"/>
<!--<ItemsStackPanel Orientation="Vertical"/>-->
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<Grid Background="AliceBlue" Margin="3,0">
<TextBlock Text="{Binding}" Foreground="Black" Margin="4,2"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
关于c# - Windows Store App ListView:如何使用GroupStyle?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21163076/