2010-05-04 159 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的,所以你可能會想改變這一點。