假設你有一個GUID集合。
var guids = new List<Guid>();
for (var i = 0; i < 12; i++)
{
guids.Add(Guid.NewGuid());
}
然後,您可以將此集合綁定到您的ListBox控件。
myList.ItemsSource = guids;
ListBox控件將根據guid集合的內容自動更新。
要處理ListBox中項目的click事件,您需要處理該控件的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>
晶瑩剔透,正確的答案。非常感謝你! – Tiwaz89
只是最後一個問題,在XAML中有你的列定義。一個應該是寬度和另一個高度的權利?在這種情況下,我看到兩者都是寬度,也許只是一個錯字是?另外,我看到RowDefinition沒有Width屬性。它是否是父母的寬度?當定義寬度和高度屬性時,你使用px,%還是什麼? – Tiwaz89