可変高さの項目を列に表示するために、WrapPanel を使用しています。ラップパネルのサイズには制限があります。
WrapPanel が「いっぱい」になったときを判断する方法はありますか? 次に、アニメーション付きの別のパネルにページを移動します。
パネルの子であるアイテムの ArrangeOverride を見てきましたが、常に必要なスペースをすべて取得しているようです。それらがいつクリップされ始めるかを判断する方法が必要です。
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 を非表示にすることができます。
達成しようとしていることに実際に WrapPanel を使用することは、良い考えとは思えません。
「[...] 次に、アニメーション付きの別のパネルにページを移動します。」
これは、簡単ではないアニメーションをレイアウトするレイアウトになります。
独自のパネル クラスを作成する必要があります:ここまたは (アニメーション)ここを参照してください。