通常のControlTemplateではなく、ItemsPanelTemplateを使用します。
ソースコード
App.xaml
<Application x:Class="HelloWorld.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" StartupUri="Page1.xaml"> </Application>
Page1.xaml
<Page x:Class="HelloWorld.Page1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300" Title="Page1"> <ListBox x:Name="listBox" Width="200" Height="100"> <ListBox.ItemsPanel> <ItemsPanelTemplate> <UniformGrid Columns="2" /> </ItemsPanelTemplate> </ListBox.ItemsPanel> </ListBox> </Page>
Page1.xaml.cs
using System.Windows.Controls; namespace HelloWorld { public partial class Page1 : Page { public Page1() { InitializeComponent(); listBox.ItemsSource = new string[] { "佐藤", "鈴木", "渡辺", "小林", "田中" }; } } }
参考
ItemsPanelTemplate クラス (System.Windows.Controls)
ItemsControl の項目のレイアウト用に ItemsPresenter が作成するパネルを指定します。