Элемент списка горизонтального растяжения в WP7 с группировкой - PullRequest
1 голос
/ 13 августа 2011

Я хочу реализовать ListBox Grouping на WP7.Я нашел эту статью очень полезной.На самом деле я сделал группировку работ.Но у меня возникла проблема с горизонтальным растяжением ListItem.Я предполагаю, что мне нужно установить ItemContainerStyle и изменить HorizontalContentAlignment на Stretch.Но это не работает для этого случая (если установить ItemTemplate напрямую, это работает).Какие-либо предложения?Большое спасибо!

Вот код, ListItem должен быть растянут, но вместо этого он центрируется.

<Grid x:Name="LayoutRoot" Background="Transparent">
    <Grid.Resources>
        <DataTemplate x:Key="GroupHeaderTemplate">
            <Border BorderBrush="Yellow" BorderThickness="1" Margin="12,3,12,12" Padding="6" VerticalAlignment="Center">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition />
                        <ColumnDefinition />
                    </Grid.ColumnDefinitions>
                    <TextBlock Grid.Column="0" Text="{Binding Number}" HorizontalAlignment="Left" Margin="6,0,0,0" FontSize="22" Foreground="White"/>
                    <TextBlock Grid.Column="1" Text="{Binding Name}" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="22" Foreground="White"/>
                </Grid>
            </Border>
        </DataTemplate>

        <DataTemplate x:Key="CustomItemTemplate">
            <Grid Margin="12,3,12,12" VerticalAlignment="Center">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="Auto"/>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition />
                    <RowDefinition />
                </Grid.RowDefinitions>
                <TextBlock Grid.Column="0" Grid.Row="0" Text="{Binding Number}" HorizontalAlignment="Left" Margin="6,0,0,0" FontSize="22" Foreground="White"/>
                <TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding Name}" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="22" Foreground="White"/>
            </Grid>
        </DataTemplate>

        <local:GroupingItemsControlConverter x:Key="GroupingItemsConverter" />
        <local:GroupingItemsControlConverterSelector x:Key="GroupingItemsSelector" />
        <local:GroupingItemsControlConverterParameters x:Key="GroupingItemParameters" 
                                                       GroupStyle="{StaticResource GroupHeaderTemplate}" 
                                                       ItemStyle="{StaticResource CustomItemTemplate}" 
                                                       GroupSelector="{StaticResource GroupingItemsSelector}"
                                                       />

        <Style TargetType="ListBoxItem" x:Key="CustomItemContainerStyle">
            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
        </Style>
    </Grid.Resources>

    <ListBox x:Name="TheListBox" 
             ItemsSource="{Binding Items, Converter={StaticResource GroupingItemsConverter}, ConverterParameter={StaticResource GroupingItemParameters}}"
             ItemContainerStyle="{StaticResource CustomItemContainerStyle}" />
</Grid>

1 Ответ

2 голосов
/ 13 августа 2011

Список ListBox? Вам следует рассмотреть возможность использования LongListSelector из Silverlight Toolkit . И чтобы упростить привязку для этого, вы можете использовать тип коллекции LongListCollection (подробности смотрите в полном примере ).

Затем вы можете просто создать приложения, которые группируют значения, например, так:

longlistselector grouping

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...