0

可変高さの項目を列に表示するために、WrapPanel を使用しています。ラップパネルのサイズには制限があります。

WrapPanel が「いっぱい」になったときを判断する方法はありますか? 次に、アニメーション付きの別のパネルにページを移動します。

パネルの子であるアイテムの ArrangeOverride を見てきましたが、常に必要なスペースをすべて取得しているようです。それらがいつクリップされ始めるかを判断する方法が必要です。

4

2 に答える 2

0

ScrollableHeight を使用して表示するかどうかを決定するトリガーを使用して ScrollViewer を使用する例を次に示します。現時点では、一部のテキストを変更するだけですが、他のことを行うこともできます。Rectangles の 1 つを削除すると、トリガーが発生します。

<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:sys="clr-namespace:System;assembly=mscorlib"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      Width="100" Height="50">
    <ScrollViewer x:Name="scrollViewer" VerticalScrollBarVisibility="Hidden">
        <WrapPanel>
            <Rectangle Width="50" Height="20" Fill="Red"/>
            <Rectangle Width="50" Height="20" Fill="Blue"/>
            <Rectangle Width="50" Height="20" Fill="Green"/>
            <Rectangle Width="50" Height="20" Fill="Yellow"/>
            <Rectangle Width="50" Height="20" Fill="Orange"/>
        </WrapPanel>
    </ScrollViewer>
    <TextBlock IsHitTestVisible="False">
        <TextBlock.Style>
            <Style TargetType="{x:Type TextBlock}">
                <Setter Property="Text" Value="Clipped"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=scrollViewer, Path=ScrollableHeight}" Value="0">
                        <Setter Property="Text" Value="Not Clipped"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </TextBlock.Style>
    </TextBlock>
</Grid>

ScrollViewer.ComputedVerticalScrollBarVisibilityに基づいてトリガーすることもできますが、それには ScrollBar が実際に表示される必要がありますが、ScrollableHeightに基づいてトリガーすると、ScrollBar を非表示にすることができます。

于 2009-02-04T19:35:58.163 に答える
0

達成しようとしていることに実際に WrapPanel を使用することは、良い考えとは思えません。

「[...] 次に、アニメーション付きの別のパネルにページを移動します。」

これは、簡単ではないアニメーションをレイアウトするレイアウトになります。

独自のパネル クラスを作成する必要があります:ここまたは (アニメーション)ここを参照してください。

于 2009-02-05T10:33:39.330 に答える