你只需要建立一個集合您的項目在您的DataContext並將其設置爲ListBox.ItemsSource。然後這將填寫您的DataTemplate。
見例如:
<Grid>
<Grid.Resources>
<src:Customers x:Key="customers"/>
</Grid.Resources>
<ListBox ItemsSource="{StaticResource customers}" Width="250" Margin="0,5,0,10"
DisplayMemberPath="LastName"/>
</Grid>
和:
public class Customer
{
public String FirstName { get; set; }
public String LastName { get; set; }
public String Address { get; set; }
public Customer(String firstName, String lastName, String address)
{
this.FirstName = firstName;
this.LastName = lastName;
this.Address = address;
}
}
public class Customers : ObservableCollection<Customer>
{
public Customers()
{
Add(new Customer("Michael", "Anderberg",
"12 North Third Street, Apartment 45"));
Add(new Customer("Chris", "Ashton",
"34 West Fifth Street, Apartment 67"));
Add(new Customer("Cassie", "Hicks",
"56 East Seventh Street, Apartment 89"));
Add(new Customer("Guido", "Pica",
"78 South Ninth Street, Apartment 10"));
}
}
示例源:http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.itemssource(v=vs.95).aspx
編輯:根據意見的討論,也許你只需要一個簡單的ItemsControl(因爲你不需要保留選定的項目,或者甚至更好地處理多個選擇,這是ListBox的目的)。
例如:
<ItemsControl ItemsSource="{Binding NavigateItems}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="{Binding Label}"
Command="{Binding ButtonCommand}"
CommandParameter="{Binding URL}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
和:
public class NavigateItem
{
public String Label { get; set; }
public String URL { get; set; }
public NavigateItem(String label, String url)
{
this.Label = label;
this.URL = url;
}
}
public class NavigateItems : ObservableCollection<NavigateItem>
{
public NavigateItems()
{
Add(new NavigateItem("Google", "http://www.google.com");
Add(new NavigateItem("Bing", "http://www.bing.com");
}
}
當然搭好ButtonCommand導航到該參數傳遞的網址,但取決於你如何設置ViewModel /綁定。
我覺得這是一個很長的解決方案,如此簡單。那麼我忘了說我也想設置ListBoxItems的name屬性。我想我可以做一些事情,比如在C#中準備一系列listitems並將它們綁定到列表框。這可能嗎? – enkara 2011-03-31 11:15:04
你爲什麼要設置名稱屬性?我懷疑你以後可能想用它來訪問它們? – dain 2011-03-31 11:20:01
是的,也許我完全在錯誤的路徑...我想要一個典型的選擇器(例如城市),但這必須是動態的,我解析XML來獲取列表。這個選擇會觸發一個事件 – enkara 2011-03-31 11:25:24