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メイン リストではなくグループ ヘッダーを変更していることです ( http://www.windowsphonegeek.com/articles/wp7-longlistselector-in-depthの画像)。 --part2-data-binding-scenarios ):ItemsPanel

グループ ヘッダーをラップ

残念ながら、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. (TargetType="controls:LongListSelector")Styleに適用される までスクロールします。LongListSelector

  5. TemplatedListBox.ItemsPanelを に変更WrapPanel

                    <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 に答える