2012-02-24 6 views
0

水平スタックパネルのように機能するWPFレイアウトを探しています。アイテムは十分なスペースがあれば理想的な幅を選択しますが、利用可能なパネルスペースに収まらない場合均等に絞るためのパネルレイアウト

私はこれで何をしたいの近くに取得することができます

<Grid Width="400" Height="80"> 
     <UniformGrid Rows="1" HorizontalAlignment="Left"> 
      <Button Content="Long Button" /> 
      <Button Content="Very Long Button" /> 
      <Button Content="Button" /> 
      <Button Content="Button" /> 
      <Button Content="Button" /> 
     </UniformGrid> 
    </Grid> 

問題ここでは、UniformGridが同じ幅のボタンのすべてを保持しています。

私はStackPanelUniformGridを交換する場合は、項目が正しくサイズが、彼らはStackPanelが(その固定サイズの親のおかげで)に拡大できる最大サイズを超えて拡張するとき、彼らは代わりに強制されるので、切り出され小さな領域に

したがって、すぐに使用できるパネルで必要な動作を得る方法はありますか?

ボタンのサイズが静的である場合
+0

動的にしたい場合は、これを行う方法がわかりません。私たちは、アイテムコントロール内の動的コンテンツに対してこれを行うカスタムパネルを作成しました。あなたがそれを必要としないならば、Rui Gaspars Answerはpropably最高ですが、私はcolumndefinitionsの幅を常に*(星)に設定します – dowhilefor

+0

私はカスタムパネルを作成しようとしています。それは私がそれがそうであると思ったよりも簡単だと思われる。 – Mark

答えて

1

だから、私は私がアウト・オブ・ボックスのパネルで必要な動作を得ることができる方法はありますか?

いいえ、all the existing panelsを見ると、要件に合ったものがないことがわかります。自分で実装します。

+0

それはまさに私がやったことです。そして、実際には、私が望む正確な振る舞いを再現するのに数分しかかかりませんでした。私が欲しかったのは答えではありませんが、あなたは勝ちます。 – Mark

0

が、あなたはこれを使用することができます。

<Grid Width="400" Height="80"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="2*"/> 
     <ColumnDefinition Width="3*"/> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 
    <Button Grid.Column="0" Content="Long Button" /> 
    <Button Grid.Column="1" Content="Very Long Button" /> 
    <Button Grid.Column="2" Content="Button" /> 
    <Button Grid.Column="3" Content="Button" /> 
    <Button Grid.Column="4" Content="Button" /> 
</Grid> 
+0

残念ながら、パネルの内容は静的ではないため、事前に理想的な列の幅を知ることはできません。 – Mark

関連する問題