これは状況です:
ビューモデルの2つのリストに、特定の属性(チェック済みと呼びましょう)によってフィルタリングされるデータソースがあります。それを新しいものと古いものと呼んでください。
新しいものは 1 つのリストに表示する必要があり、古いものはそのすぐ下のリストに表示する必要があります。
ああ、一斉にスクロールする必要があります。そのため、Old が現在画面外にある場合、リストが上にスワイプされると、表示されるようになります。
私は現在、次のような LongListSelectors でこれを解決しました:
<ScrollViewer VerticalAlignment="Top" VerticalScrollBarVisibility="Auto">
<StackPanel>
<phone:LongListSelector x:Name="NewList" Margin="0,0,0,0" ItemsSource="{Binding New}" SelectionChanged="NewList_SelectionChanged">
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0,0,0,17">
<TextBlock Text="{Binding Name}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" Foreground="{Binding Color}" />
</StackPanel>
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>
<phone:LongListSelector x:Name="OldList" Margin="0,0,0,0" ItemsSource="{Binding Path=Old}" Padding="0,20,0,0">
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0,0,0,17">
<TextBlock Text="{Binding Name}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" FontStyle="Italic" Foreground="{Binding Color}"/>
</StackPanel>
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>
</StackPanel>
</ScrollViewer>
scrollviewer 内の stackpanel 内の 2 つの longlistselector。これらのリストの両方に何かがある間、すべてが完全にうまく機能します。
ただし、そのうちの 1 つにコンテンツがまったくない場合、すぐに拡張されて親の高さ全体を埋めます。この場合... 無限スクロールビューア。つまり、New リストに何も表示されない場合、画面にはまったく何も表示されず、New リストに何も表示されない場合は、New リスト項目を通過した後、ほとんど無限にスクロールできます。
ここにオプションはありますか?プログラムで大量のテキスト フィールドを作成してから、それにイベントを関連付けたり、さらに悪いことに、独自のリスト コントロールを作成したりしませんか? 標準のリストボックスは両方とも別々にスクロールするため機能しません。
何か案は?