3

これは状況です:

ビューモデルの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 リスト項目を通過した後、ほとんど無限にスクロールできます。

ここにオプションはありますか?プログラムで大量のテキスト フィールドを作成してから、それにイベントを関連付けたり、さらに悪いことに、独自のリスト コントロールを作成したりしませんか? 標準のリストボックスは両方とも別々にスクロールするため機能しません。

何か案は?

4

2 に答える 2

0

2 つのリスト コントロールを互いの下に置くことは、ScrollViewers 内の ScrollViewer のため、一般的に悪い考えです。

ScrollViewer を使用せずに単一の LongListSelector を使用することをお勧めします。次に、古いアイテムと新しいアイテムを含む単一のコレクションを作成し、ItemTemplateSelector を使用して異なるスタイルに設定します。

于 2013-08-09T13:37:13.373 に答える