WP 7 Listbox с различной высотой ячейки - PullRequest
1 голос
/ 11 августа 2011

Я пытаюсь создать ListBox с 3 различными типами ячеек.Я сделал выбор типа, используя TemplateSelector.Это правильно выбирает CellType, но не высоту ячейки.

Я хочу, чтобы заголовок ячейки был 50px, а другие типы ячеек - 110px.Но стиль, определенный в теге, переопределяет высоту ячейки.

Я пытался написать элемент Style в сетке, но он не действует.

Есть ли способ достичь этого?

<delay:DeferredLoadListBox.ItemTemplate>
    <DataTemplate>
        <local:CellTemplateSelector
            Content="{Binding}">
                <local:CellTemplateSelector.CellHeader>
                    <DataTemplate>
                        <Grid
                            Name="MainGrid"
                            Width="480"
                            Height="50">
                            <Image />
                            <TextBlock />
                        </Grid>
                    </DataTemplate>
                </local:CellTemplateSelector.CellHeader>

                <local:CellTemplateSelector.GrayCell>
                    <DataTemplate>
                        <Grid
                            Name="MainGrid"
                            Width="480"
                            Height="110">
                            <Image />
                            <TextBlock />
                        </Grid>
                    </DataTemplate>
                </local:CellTemplateSelector.GrayCell>

                <local:CellTemplateSelector.WhiteCell>
                    <DataTemplate>
                        <Grid
                            Name="MainGrid"
                            Width="480"
                            Height="110">
                            <Image />
                            <TextBlock />
                        </Grid>
                    </DataTemplate>
                </local:CellTemplateSelector.WhiteCell>

        </local:CellTemplateSelector>
    </DataTemplate>
</delay:DeferredLoadListBox.ItemTemplate>

<delay:DeferredLoadListBox.Resources>
    <Style
        TargetType="ListBoxItem">
        <Setter
            Property="Height"
            Value="110" />
    </Style>
</delay:DeferredLoadListBox.Resources>

<delay:DeferredLoadListBox.ItemsPanel>
    <ItemsPanelTemplate>
        <StackPanel />
    </ItemsPanelTemplate>
</delay:DeferredLoadListBox.ItemsPanel>
</delay:DeferredLoadListBox>

Ответы [ 2 ]

1 голос
/ 25 августа 2011

Спасибо за ваш ответ, Крис. Я использовал другой подход:

    xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"

   <toolkit:LongListSelector
                    x:Name="citiesListGropus"
                    Background="White"
                    ItemTemplate="{StaticResource ContentCellTemplate}"
                    GroupHeaderTemplate="{StaticResource ActualityGroupHeaderTemplate}"
                    Margin="0,66,0,0" Grid.Row="1" MouseEnter="citiesListGropus_MouseEnter" MouseLeave="citiesListGropus_MouseLeave">

......................

Отсюда:

http://silverlight.codeplex.com/releases/view/55034

ContentCellTemplate и ActualityGroupHeaderTemplate являются шаблонами для каждого типа ячейки.

1 голос
/ 19 августа 2011

Я проверил это с помощью вашего кода и обнаружил, что самым простым решением вашей проблемы было полное удаление установщика свойства Height из блока Style.Если вы позволите шаблонам данных установить свою собственную высоту, используя технику, которую вы уже используете, она должна вести себя точно так, как вы намеревались.

/ chris

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