12

我正在使用列表框和包装面板来显示数据。

例如:

    <ListBox ItemTemplate="{StaticResource ItemTemplateListBoxAnimation}">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <toolkit:WrapPanel ItemHeight="150" ItemWidth="150">
                </toolkit:WrapPanel>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
    </ListBox>

    <DataTemplate x:Key="ItemTemplateListBoxAnimation">
        <Grid Width="130" Height="130">
            <Image Source="{Binding Image}"/>
        </Grid>
    </DataTemplate>

它看起来像:

在此处输入图像描述

现在我需要使用 LongListSelector和分组结果:

    <toolkit:LongListSelector ItemTemplate="{StaticResource ItemTemplateListBoxAnimation}">
        <toolkit:LongListSelector.GroupItemsPanel>
            <ItemsPanelTemplate>
                <toolkit:WrapPanel/>
            </ItemsPanelTemplate>
        </toolkit:LongListSelector.GroupItemsPanel>
    </toolkit:LongListSelector>

但它看起来像:

在此处输入图像描述

我需要得到:

在此处输入图像描述

你的假设?谢谢

4

2 回答 2

5

问题是该GroupItemsPanel属性没有改变ItemsPanel主列表的,而是ItemsPanel组标题的,正如可以在这里看到的(图片来自http://www.windowsphonegeek.com/articles/wp7-longlistselector-in-depth --part2-data-binding-scenarios ):

组标头包装

不幸的是,WP 工具包似乎没有公开ItemsPanel你想要的,所以你必须修改工具包源以获得你想要的行为。

  1. 从这里获取源代码:https ://phone.codeplex.com/SourceControl/changeset/view/80797

  2. 解压,在 Visual Studio 中打开 Microsoft.Phone.Controls.Toolkit.WP7.sln 解决方案。

  3. 在 Microsoft.Phone.Controls.Toolkit.WP7 项目下,打开 Themes/Generic.xaml

  4. 向下滚动到Style适用于LongListSelector(TargetType="controls:LongListSelector")

  5. 将 更改TemplatedListBox.ItemsPanelWrapPanel

                    <primitives:TemplatedListBox.ItemsPanel>
                        <ItemsPanelTemplate>
                            <controls:WrapPanel/>
                        </ItemsPanelTemplate>
                    </primitives:TemplatedListBox.ItemsPanel>
    
  6. 重建并引用新的 dll,您的项目应该正确包装!

于 2012-11-05T23:57:40.180 回答
3

您可以使用自定义样式覆盖它

<toolkit:LongListSelector 
                        Background="{StaticResource FCBackground}"  
                        HorizontalContentAlignment="Stretch" 
                        ItemsSource="{Binding NowShowingEvents}"
                        ItemTemplate="{StaticResource EventsListMediumItemTemplate}"  
                        IsFlatList="True" 
                        Style="{StaticResource LongListSelectorStyleCustom}"
                                >

                    </toolkit:LongListSelector>


   <Style x:Key="LongListSelectorStyleCustom" TargetType="toolkit:LongListSelector">
        <Setter Property="Background" Value="{StaticResource PhoneBackgroundBrush}"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="toolkit:LongListSelector">
                    <toolkitPrimitives:TemplatedListBox x:Name="TemplatedListBox" Background="{TemplateBinding Background}">
                        <toolkitPrimitives:TemplatedListBox.ItemContainerStyle>
                            <Style TargetType="ListBoxItem">
                                <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                            </Style>

                        </toolkitPrimitives:TemplatedListBox.ItemContainerStyle>
                        <toolkitPrimitives:TemplatedListBox.ItemsPanel>
                            <ItemsPanelTemplate>
                                <toolkit:WrapPanel Margin="24,0,12,24"/>
                            </ItemsPanelTemplate>
                        </toolkitPrimitives:TemplatedListBox.ItemsPanel>
                    </toolkitPrimitives:TemplatedListBox>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
于 2013-10-09T09:27:35.343 回答