2012-02-08 2 views
3

UIを作成中です。その中心的な要素は、さまざまなアイテム数のスタックパネルを持つスクロールビューアです。画面に十分なスペースがない場合は、スクロールビューアを使用してスタックパネルをクリックできるように、左右のボタンが表示されます。アイテムはすべて同じサイズであることに注意してください。スクロールビューワの幅を動的に調整する

<Grid.ColumnDefinitions> 
    <ColumnDefinition x:Name="LeftButton" Width="Auto"/> 
    <ColumnDefinition x:Name="Content" Width="*"/> 
    <ColumnDefinition x:Name="RightButton" Width="Auto"/> 
</Grid.ColumnDefinitions> 

これは問題なく動作しています。しかし、今では完全/完全なアイテムのみを表示する必要があります。だから、スタックパネルにもっと多くのアイテムがある場合は、画面上に表示できるよりも、右または左の部分アイテムが表示されたくありません。スクロールボタンが表示され、利用可能なアイテムがさらにあることが示されます。 したがって、子供がスタックパネルに追加された場合、スタックパネルを保持しているスクロールビューワは、すべてのアイテムを表示するのに十分なスペースが画面上にあるかどうかを確認する必要があります。そうでない場合は、幅を狭くして、次の(部分的に表示される)項目を隠すようにします。

私の質問は、スタックパネルのすべてのアイテムを画面に表示できるかどうかを判断する最も良い方法は何ですか。そうでない場合は、おそらく表示されている部分アイテムを隠すことができますか?

SizeChangedイベントに依存して、Scrollviewer自体の幅で遊んでいますが、これがこの動作を達成する最も賢明な方法であるかどうかはわかりません。初期化時にスクロールビューアのMaxWidthを決定し、それに応じて設定して成長させる方が良いでしょうか?事前に

おかげで、 好奇心

+0

この目標を達成することをさらに困難にする問題は、スクロールビューアが設定されるとスクロールビューワの幅を変更できないことです。私が試してみると、それはまったく表示されません。 – curiosity

答えて

1

私は、これは、このようなカスタマイズされたスクロールビューアであることから、その後、あなたがすべてでデフォルトのScrollViewerのを使用する必要があるが、代わりにそののStackPanelをもとに、独自のコントロールを使用していないと思いますアイテムが表示されます。左または右のボタンを押すと、うまくスクロールできるようにアニメーションを実装することもできます。

+0

それは確かに考える価値があります。たぶん私はスクロールビューをまったく止めています。私はアニメーションのアイデアが好きです。しかし、現時点では、項目に何かを描画しなければならない場合があります。その項目には含まれず、項目が存在する画面上の位置に描画されます。アイテムとそれに描かれた追加レイヤーとの間でアニメーションを同期させることがどれだけ可能であるかはわかりません。 – curiosity

関連する問題