2012-04-13 4 views
14

スタックパネルにコンテンツをラップすることは可能ですか?スタックパネルにコンテンツをラップするwpf

代わりにWrapPanelを使用できることはわかっています。 しかし、コードを変更する理由から、私はStackpanelを使用する必要があります。

だから、5つの項目を言った後、スタックパネルの項目を折り返す方法がありますか? ありがとう!

+2

'WrapPanel'の代わりに' StackPanel'を使う必要がありますか? – Rachel

+0

スタックパネルTHTの特定の機能は、我々はcustomized..so我々はスタックpanel..iでサポートされている当社独自の仮想化を持っているがありますが – user1202434

答えて

14

必要な数の項目を含むネストされたStackPanelを作成します。

以下の例では、それぞれが横に表示される5つの項目を含む<StackPanel Orientation="Horizontal">要素によって占められている2つの行があります。

<StackPanel Orientation="Vertical"> 
    <StackPanel Orientation="Horizontal"> 
     <Item1 /> 
     <Item2 /> 
     <Item3 /> 
     <Item4 /> 
     <Item5 /> 
    </StackPanel> 
    <StackPanel Orientation="Horizontal"> 
     <Item1 /> 
     <Item2 /> 
     <Item3 /> 
     <Item4 /> 
     <Item5 /> 
    </StackPanel> 
</StackPanel> 
4

状況に応じて、UniformGridを使用できます。いくつかの例は、hereで見つけることもできます。

このように5つのアイテムの後にラップするように定義できます。

<UniformGrid Columns="5"> 
<Button /> 
<Button /> 
<Button /> 
</UniformGrid> 

各項目は同じ幅になりますが、これが効果的かどうかはわかりません。

0

ラップパネルなしではできないと思います。おそらく、スタックパネルの内側にwrapPanelを置くことができます - スタックパネルの実際の幅にその幅を設定します。あなたはWidth="{Binding ActualWidth, ElementName=StackPanel1}"

のようにそれをバインドすることができます。しかし、これは単なるハックされます - 私はラップパネルは、あなたのニーズに最も適していると思います。私にとって

7
<StackPanel> 
     <StackPanel.Style> 
      <Style TargetType="{x:Type StackPanel}"> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="{x:Type StackPanel}"> 
          <WrapPanel/> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 
     </StackPanel.Style> 
    </StackPanel> 
+8

LOLZ ..ラップパネルを仮想化するための車輪の再発明思い付くしたいいけません。それは私を苛立たせるだろう。 –

+3

:)私はあなたを聞いて、リッチ!しかし、質問に文脈をもたずにstackPanelを保持することについて、なぜこのような主張があるのか​​を伝えるのは難しいです!だからそこに!内部癌としてWrapPanelを使用したtypeof(StackPanel)があります。 –

+0

これは深刻ですか? –

9

、うまくシンプルWrapPanel作品:StackPanelまたはその他の容器の内側

<WrapPanel Orientation="Horizontal" Width="500" /> 

ありません。 ActualWidthにそれを結合すると、ダウンサイジングを防止することができるので、一定の値に幅を設定すると、優れたイムいくつかの例をすることができ(例えば親コントロールが小型化されたときに、WrapPanelではありません)なぜあなたを行う

+0

これは、1行あたりの修正量がない場合に最適です=) – mikelt21