#はじめに
WPF学習中のため自分用に記載していきます。
間違い、不足などありましたらコメントをよろしくお願いします。
#●ItemsPanelプロパティ
コレクション項目をどのようにレイアウトするかを決定する。
~省略~
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<!--(1) <StackPanel Orientation="Vertical" />-->
<!--(2) <StackPanel Orientation="Horizontal" />-->
<!--(3) <WrapPanel Orientation="Vertical" />-->
<!--(4) <WrapPanel Orientation="Horizontal" />-->
<!--(5) <Grid/>-->
<!--(6) <UniformGrid/>-->
<!--(7) <UniformGrid Rows="5"/>-->
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
●(1)、(2)
StackPanelで項目を並べる。
Orientationプロパティで、縦方向、横方向を指定できる。
ItemsPanelプロパティを指定しない場合は、(1)StackPanel Orientation="Vertical"の形式で表示される。
●(3)、(4)
WrapPanelで項目を並べる
StackPanelと同様、Orientationプロパティで、縦方向、横方向を指定できる。
●(5)
Gridで項目を並べる。子要素を順番に並べる機能を持たないため、重なって表示される。
●(6)、(7)
UniformGridで項目を並べる。等間隔にコレクションを配置する。
Columnsプロパティ、Rowsプロパティを設定して、列数、行数を指定することができる。
#●ItemTemplateプロパティ
DataTemplateを指定してどのようにオブジェクトを表示するかを決定する。
// オブジェクトの定義
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="5"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Margin="10">
<Run Text="Name:" Foreground="Red"/>
<Run Text="{Binding Name}" Background="LightYellow"/>
<LineBreak/>
<Run Text="Age:" FontStyle="Oblique"/>
<Run Text="{Binding Age}" FontSize="25"/>
</TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>