2012-07-05 10 views

答えて

1

WinRT/XAMLのようなコントロールがあるとは思わないので、カスタムコントロールを実装する必要があります。あなたが取ることができるアプローチはたくさんありますが、ScrollViewerの動作を要件に合わせるのが簡単でない可能性があるため、ScrollViewerの使用や操作イベントの直接処理は避けてください。私は、操作イベントに基づいてスクロールオフセットを制御し、スクロールオフセットに基づいて、ビュー内の要素を配置します。キャンバスコントロールを使用します。スクロールオフセットに応じて項目パネル内の要素の位置を変更する必要があります。たとえば、一方の端のビューポートを超える項目が他方の端に移動されるようにします。カスタム依存プロパティ、アイテムコンテナなどが必要です。これらのAPIをすべて知っていれば、おそらく少なくとも数時間の作業が必要になるでしょう。

3

間違いなく可能です。私は現時点で問題を解決しており、完了したら作業をポストします。これまでは以下のようになっています。

考えられるのは、スクロールビューアのviewchangedイベントにフックして、バーを移動するときにいつでも起動するということです。いったんそこにいると、アイテムのオフセットとサイズの位置を計算し、それを使ってリストボックスコンテナの実際のサイズや何があるかを測定することができます。

オフセットの位置を知り、リストボックスの実際の高さとアイテムの高さを知ると、現在表示されているアイテムと表示されていないアイテムが分かります。オブジェクトにバインドされたリストが、双方向バインディングでINotifyChangedインタフェースを実装する観察可能なコレクションであることを確認してください。次に、スクロールしている場所に基づいて前後に回転するオブジェクトのセットを定義することができます。

もう1つの方法は、異なる開始点を試すことです。おそらく、その下にマーキーとスクロールバーを備えた単一のコントロールを使用しますか?

XAML

</UserControl.Resources> 
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 
<ScrollViewer x:Name="ScrollViewer1"> 
    <ListBox x:Name="SampleListBox" Background="White" ItemsSource="{Binding Path=sampleItems}" ItemTemplate="{StaticResource sampleTemplate}" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Grid.Row="0" Grid.RowSpan="2"> 

    </ListBox> 
</ScrollViewer> 
</Grid> 

コード

0123の後ろ
+0

これまでにこれを解決しましたか?私はあなたのソリューションに興味があります。 – dex3703

関連する問題