オブジェクトの観察可能なコレクションにバインドされた LongListSelector があり、LongListSelector をタップすると、タップされたアイテムが垂直方向に展開されます。ただし、もう一度タップすると (アイテムが縮小されます)、アイテムの高さは拡大されたときのままです。これにより、リストされているデータに大きなギャップが残ります。もう一度拡大/縮小すると問題はなくなりますが、これはアイテムごとに1回だけ発生します。これは非常に奇妙です。私が得た結論は、各項目テンプレートの LongListSelector グリッドが正しく更新されていない (Auto に設定されている) ということです。
私は周りを見回しましたが、一般的な応答は、itemtemplate でグリッドのサイズをリセットすることです。グリッドを取得して高さの値をリセットする必要があるため、私ははるかにエレガントなソリューションを好みます。
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 を表示するものはないようです。注: LongListSelector で FindName を使用できますが、DataTemplate (x:Name を使用して既にアクセスできます) しか取得できず、そこから DataTemplate を操作することはできません。
誰かが解決策を知っていれば、それは素晴らしいことです!
ありがとう。