列表框:动态更改列表项或每个行高

时间:2014-04-23 09:35:52

标签: c# wpf windows-phone-8 listbox windows-phone

我正在使用Windows Phone 8,我有一个包含4个项目的列表框。

我想动态更改列表项或每个行高。

如何实现这一目标?

以下是我的代码:

<ListBox Name="TopicListbox"
                     ItemTemplate="{StaticResource TitleDataTemplate}"
                     HorizontalAlignment="Stretch"
                     SelectionChanged="TopicListboxSelectionChanged">
                <ListBox.ItemsPanel>
                    <ItemsPanelTemplate>
                    </ItemsPanelTemplate>
                </ListBox.ItemsPanel>
</ListBox>

<DataTemplate x:Key="TitleDataTemplate">
            <Grid MinHeight="90" 
              HorizontalAlignment="Stretch"
              VerticalAlignment="Center">
            </Grid>
</DataTemplate>

1 个答案:

答案 0 :(得分:1)

让您的商品保持高度同步的好方法是使用GridShareSizedScope

<ListBox Name="TopicListbox" 
                     ItemTemplate="{StaticResource TitleDataTemplate}"
                     HorizontalAlignment="Stretch"
                     SelectionChanged="TopicListboxSelectionChanged"
                     Grid.IsSharedSizeScope="True">
                <ListBox.ItemsPanel>
                    <ItemsPanelTemplate>
                    </ItemsPanelTemplate>
                </ListBox.ItemsPanel>
</ListBox>

<DataTemplate x:Key="TitleDataTemplate">
            <Grid MinHeight="90" 
              HorizontalAlignment="Stretch"
              VerticalAlignment="Center">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" SharedSizeGroup="A" />
                        </Grid.RowDefinitions>

                        <!-- Your template here -->
            </Grid>
</DataTemplate>

请注意添加Grid.IsSharedSizeScope="True"RowDefinition SharedSizeGroup

这将允许您的所有物品保持与共享高度组相同的高度