GUIDのコレクションがあるとします。
var guids = new List<Guid>();
for (var i = 0; i < 12; i++)
{
guids.Add(Guid.NewGuid());
}
次に、このコレクションをListBoxコントロールにバインドできます。
myList.ItemsSource = guids;
ListBoxコントロールは、GUIDコレクションの内容に応じて自動的に更新されます。
リストボックス内のアイテムのクリックイベントを処理するには、コントロールのSelectionChangedイベントを処理する必要があります。
イベントハンドラーを接続します。
<ListBox Name="MyList"
SelectionChanged="MyList_SelectionChanged">
...
</ListBox>
これで、イベントハンドラーに必要なコードを記述できます。
private void MyList_SelectionChanged(object sender,
System.Windows.Controls.SelectionChangedEventArgs e)
{
// Find out which item was clicked
if (e.AddedItems.Count > 0)
{
var myGuid = e.AddedItems[0] as Guid;
if (myGuid == null)
return;
// ...
}
}
リストボックス内の各アイテムのスタイルを設定します。それはまったく別の質問です。ListBoxをデータソース(この場合はGUIDコレクション)にバインドすることから始めます。
次に、XAMLで、リストボックスの内容を自由に設計できます。ListBoxのItemTemplateとDateTemplateを使用します。テンプレートでは、リストボックスが各アイテムに対して何をレンダリングするかを指定できます。
アイテムごとに1x1グリッドでTextBlockをレンダリングしてみましょう。TextBlockのTextプロパティをListBoxアイテムのプロパティの1つにバインドするだけです。
<ListBox Name="MyList"
SelectionChanged="MyList_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBlock Grid.Column="1" Text="{Binding ...}" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>