StackPanel に新しいアイテムを追加するときに素敵なアニメーションを表示するために、このイベントを StackPanel に追加しました。
expandableStack.SizeChanged += (s, e) =>
{
DoubleAnimation expand = new DoubleAnimation();
expand.Duration = TimeSpan.FromMilliseconds(250);
expand.From = e.PreviousSize.Height;
expand.To = e.NewSize.Height;
expandableStack.BeginAnimation(HeightProperty, expand);
};
新しいサイズが以前のサイズよりも大きい場合はうまく機能しますが、小さい場合 (アイテムを削除したとき)、StackPanel はサイズを変更しないため、イベント SizeChanged は発生しません。
StackPanel をコンテンツに合わせて調整するにはどうすればよいですか? または、StackPanel 内のアイテムのサイズを取得するにはどうすればよいですか。すべての Size/Height プロパティを試しましたが、どれもそれを表していません。
MessageBox.Show("Height: " + expandableStack.Height.ToString());
MessageBox.Show("ActualHeight: " + expandableStack.ActualHeight.ToString());
MessageBox.Show("Render size: " + expandableStack.RenderSize.Height.ToString());
MessageBox.Show("ViewportHeight size: " + expandableStack.ViewportHeight.ToString());
MessageBox.Show("DesiredSize.Height size: " + expandableStack.DesiredSize.Height.ToString());
MessageBox.Show("ExtentHeight size: " + expandableStack.ExtentHeight.ToString());
MessageBox.Show("VerticalOffset size: " + expandableStack.VerticalOffset.ToString());