2

高さが165pxのxamlカスタムリストボックスアイテムがあります

これらの項目を StackPanel に入力しています。

StackPanel list = new StackPanel();
foreach (Course course in Semestris.Courses)
{
    TI.Course.Text = course.Name;
    list.Children.Add(TI);
}
Color color = ConvertStringToColor("#FF838383");
Brush brush = new SolidColorBrush(color);
list.Background = brush;
list.Height = list.Children.Count*165; //make size of stack panel just as to display all elements

色を追加してバグを見つけます。

このスタック パネルは Expander StackPanel 内に配置されています。

Expander.Expander a = new Expander.Expander();
a.IsExpanded = false;
a.Content = list;
a.HeaderContent = Semestris.Name;

エキスパンダー コントロールでは、すべての行が auto に設定されています。つまり、子のサイズが適用されます。

そして、すべての Expander を 1 つのスタックに配置する最後のステップ:

Stack.Children.Add(a);

そして私の問題はそれです:

折りたたまれたエキスパンダーはすべて正常に動作します。

折りたたまれた

アイテムが多くない場合、すべて正常に動作します:

1 アイテム

ただし、アイテム数が 30 アイテムを超えると、次のようになります。

断ち切られた

問題はどこだ?

4

2 に答える 2

1

スタックパネルまたはエキスパンダーのどこかに高さプロパティに問題があるようです (リストまたはエキスパンダーにあるアイテムの数に関係なく)。しかし、Chris W と同じように、すべての UI 関連ステートメントをコード ビハインドよりも XAML に配置することをお勧めします。

その場合は、rowdefinitions を auto または * に設定したグリッドをさらに使用して、必要な高さまたは残りのすべての高さを示し、データのバインディングを使用します。やり直しかもしれませんが、そこから実際に何が起こっているのかをより簡単に確認できます...

于 2013-08-07T07:18:07.330 に答える
0

一番よかったのは、独自の Expander を開発したことです。

于 2013-08-08T06:22:05.120 に答える