У меня есть LongListSelector, привязанный к наблюдаемой коллекции объектов, и нажатие на LongListSelector расширяет выбранный элемент по вертикали. Однако при повторном нажатии (при этом элемент сжимается) высота элемента остается такой же, как при расширении. Это оставляет огромный пробел в перечисленных данных. Проблема исчезает, когда вы снова расширяете / сжимаете его, и это происходит ТОЛЬКО один раз для каждого элемента, это действительно довольно странно. Я пришел к выводу, что сетка LongListSelector в каждом шаблоне элементов обновляется некорректно (для нее установлено значение «Авто»).
Я осмотрелся, и общие ответы - сбросить размер сетки в шаблоне элемента. Хотя я предпочитаю гораздо более элегантное решение, поскольку для этого требуется получить сетку и сбросить ее значение высоты.
Вот код для LongListSelector:
<phone:LongListSelector x:Name="all_items_list" Margin="0,0,-12,0" ItemsSource="{Binding All_Items}" Tap="item_list_Tap" ItemTemplate="{StaticResource all_down_template}"/>
И это ItemTemplate:
<DataTemplate x:Key="all_down_template" x:Name="template">
<Grid x:Name="grid" Margin="0,0,0,15">
<!--Show this when shrunk-->
<TextBlock Text="{Binding Name}" Style="{StaticResource PhoneTextExtraLargeStyle}" FontSize="19" Height="25" VerticalAlignment="Top" Margin="45,0,10,0" TextWrapping="Wrap"/>
<!-- Show this when expanded -->
<ProgressBar Value="{Binding Percent}" Foreground="{Binding ProgressBar}" BorderBrush="{Binding ProgressBar}" Margin="34,20,0,0" HorizontalAlignment="Left" Width="421" Height="25" Visibility="{Binding Visibility}" VerticalAlignment="Top"/>
</Grid>
</DataTemplate>
Но во всех примерах ни один из них не использует LongListSelector. Я просмотрел все функции в LongListSelector, и, похоже, ни один из них не отображает выбранные элементы ItemTemplate. Примечание. Я могу использовать FindName в LongListSelector, но это дает мне только DataTemplate (к которому у меня уже был доступ, используя его x: Name), и оттуда я ничего не могу сделать с DataTemplate.
Если кто-нибудь знает решение, это было бы здорово!
Спасибо.