2010-05-04 164 views
1

我有一个表,用于存储购买的商品,并使用NHibernate的实体类:动态创建WrapPanel按钮

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列降序排列。基于IList <PurchasedItem>对象创建WrapPanel按钮的最佳方法是什么?我想为每个按钮分配事件处理程序。该按钮显示带有产品名称的标题。

回答

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的,所以你可能会想改变这一点。