0

stackpanel の要素のサイズを統一するのに助けが必要です

 void MainPageLoaded(object sender, RoutedEventArgs e)
    {
        var random = new Random();

        for (var i = 0; i < 5; i++)
        {
            var grid = new Grid();

            var border = new Border()
                             {
                                 Height = random.Next(50, 150),
                                 Width = random.Next(50, 150),
                                 Margin = new Thickness(10),
                                 BorderBrush = new SolidColorBrush(Colors.White),
                                 BorderThickness = new Thickness(1)
                             };

            grid.Children.Add(border);

            imageBoxesStackPanel.Children.Add(grid);
        }

var h = imageBoxesStackPanel.Children.Max(n => n.DesiredSize.Height);

私が達成しようとしているのは、スタックパネルの各グリッドの最大高さと最大幅を見つけて、それらすべてに適用することです。問題は、希望するサイズが常に間違っていることです。

4

2 に答える 2

1

これは、メジャー/アレンジ パスの後にカスタムの方法でのみ行うことができます。それ以前は、サイズは表示されません。その後(OnLoadedあなたが持っているイベントで)、グリッドのActualHeightとを使用できます。ActualWidth

要するに:

var h = imageBoxesStackPanel.Children.Max(n => n.ActualHeight);

ただし、これはパフォーマンスに悪影響を及ぼし、別のレイアウト パスをトリガーします。

備考: WPF では、最適なソリューションは aSharedSizeGroupまたは aUniformGridです。これはSilverlightには実装されていませんが、実装している人はいます。

于 2012-07-02T09:46:57.783 に答える
1

WPF にはUniformGridこのジョブを実行する機能がありますが、残念ながら Silverlight にはデフォルトで実装されていません。これにはいくつかの選択肢があります。

于 2012-07-02T09:36:44.120 に答える