WPF グリッド コントロールで行の自動高さを使用する方法を教えてください。
ここに私のUIがあります:
- 1 行目: 自動の高さ、ラベルとテキスト入力を含みます (実際には、これらの行がもっとあります)
- 2 行目: アイテムの数に応じて、高さが可変の ListView が含まれます。
- 3 行目: 自動高さ、上のリスト項目を制御するためのボタンが含まれています
ListView は自動サイズ調整する必要があるため、アイテム行と同じくらいのスペースしか必要としません。行が追加されると、ListView の高さが増加します。
ListView の下にあるボタンは、ListView のすぐ下にあり、その間に変数のギャップがないようにする必要があります。ListView と Buttons の間のスペースは、値を指定するために常に正確に 6 ピクセルにする必要があります。
ListView にさらに項目が追加されると、ボタンは ListView の高さで下に移動します。ウィンドウがそれらすべてを表示するのに十分な大きさでない場合、ボタンは使用可能なスペースの一番下に表示されたままにする必要があり、ListView はそのコンテンツのスクロールを開始する必要があります。
短いリストでは、次のようになります。グリッドのすべての行は自動高さで、下部には多くの空白があります。長いリストでは、中央の行が高さ 1* で、グリッドがウィンドウ全体に広がり、ボタンが下部に表示され、リストが残りのスペースに広がり、コンテンツを自動的にスクロールします。
どうやってやるの?
RowDefinition.MaxHeight プロパティを見つけましたが、* 高さを受け入れません。それ以外の場合は、次のようなものを試してみました。
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto" MaxHeight="*"/>
<RowDefinition Height="Auto"/>