我有一个表存储购买的物品和使用NHibernate的实体类:
public class PurchasedItem
{
public virtual int Id { get; set; }
public virtual Product Product { get; set; }
public virtual int SortSale { get; set; }
}
我想通过从PurchasedItems
表(IList <PurchasedItem>
对象)获取所有记录来减少代码重复。记录按SortSale
列的降序排序。基于WrapPanel
对象创建IList <PurchasedItem>
按钮的最佳方法是什么?我也想为每个按钮分配事件处理程序。该按钮显示带有产品名称的标题。
答案 0 :(得分:4)
您需要使用WrapPanel作为ItemsPanel创建一个列表框。在XAML中,您可以执行以下操作:
<ListBox Name="MyList" ItemsSource={StaticResource YourList}>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Button Height="40" MinWidth="40" Content="{Binding Id}" Click="Button_Click"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
在这个例子中,我假设YourList是PurchasedItem的列表。您还可以从代码中设置ItemsSource(即:MyList.ItemsSource = YourList;)。当您单击按钮时,它将调用以下内容,它可以显示包含您需要的任何消息框:
private void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(((sender as Button).DataContext as PurchasedItem).Product.Name);
}
请注意,我将Button的内容设置为PurchasedItem的Id,因此您可能希望更改它。