假设您有一组 GUID。
var guids = new List<Guid>();
for (var i = 0; i < 12; i++)
{
guids.Add(Guid.NewGuid());
}
然后,您可以将此集合绑定到您的 ListBox 控件。
myList.ItemsSource = guids;
ListBox 控件将根据您的 guids 集合的内容自动更新。
要处理 ListBox 中某个项目的单击事件,您需要处理控件的 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 中的每个项目设置样式。那是另一个问题。首先将您的 ListBox 绑定到您的数据源(在本例中为 GUID 集合)。
然后在 XAML 中可以自由设计 ListBox 的内容。使用 ListBox 的 ItemTemplate 和 DateTemplate。在模板中,您可以指定 ListBox 应为每个项目呈现的内容。
让我们为每个项目渲染一个 1x1 网格中的 TextBlock。只需将 TextBlock 的 Text 属性绑定到 ListBox 项的属性之一。
<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>