I am reading a database file and based on the no. of entries output from the database to my query, I want to populate the buttons. And on clicking any of these buttons, I wa
The task of generating multiple controls for multiple items from some list is best solved using ItemsControl:
This ItemsControl named "itemsList" contains buttons with custom template. Each button will display one the Name
of one item from list.
DataEntity is a class which contains values from db, e.g.
public class DataEntity
{
public string Name { get; set; }
}
Items list is linked to ItemsControl via ItemsSource property (in my demo I'm doing it in window code-behind in constructor)
itemsList.ItemsSource = new ObservableCollection
{
new DataEntity { Name = "A" },
new DataEntity { Name = "B" },
new DataEntity { Name = "C" },
};
Buttons have click handler attached ("ItemButtonClick"). The clicked button is determined from sender
argument:
private void ItemButtonClick(object sender, RoutedEventArgs e)
{
var button = (Button)sender;
var item = button.DataContext as DataEntity;
MessageBox.Show("Clicked " + item.Name);
}