[英]DataGrid Column XAML
我使用DataGrid來顯示數據庫表中的項目,我使用的是EF CodeFirst,因此數據庫查詢會自動生成一個對象。
這是我的XAML:
<DataGrid Name="details" Margin="0,20,0,0" ItemsSource="{Binding}">
</DataGrid>
這是它背后的代碼:
data = new DbLayer();
int cardNumId = (from dataCardNum in data.creditCards
where dataCardNum.creditCardNumber == cardNum
select dataCardNum.Id).First();
debits =new ObservableCollection<Debit>(( from billings in data.charges
where billings.creditCardNumber.Id == cardNumId
select billings).ToList());
DataContext = debits;
這解決了用我的數據庫中的所有信息填充我的DataGrid。 唯一的問題是我有兩列我不想顯示。 我試圖創建一個dataTemplate,它將使用我想要的列生成網格,但是當我將它綁定到datacontext時,它沒有顯示任何信息。
這是我的dataTemplate:
<DataTemplate x:Key="debitShow" DataType="DataTemplate:MonthBill.Debit">
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Header="amount" Binding="{Binding amount}"/>
<DataGridTextColumn Header="charge date" Binding="{Binding chargeDate}"/>
<DataGridCheckBoxColumn Header="charged" Binding="{Binding charged}"/>
<DataGridTextColumn Header="store name" Binding="{Binding storeName}"/>
<DataGridTextColumn Header="purchase date" Binding="{Binding debitDate}"/>
<DataGridTextColumn Header="description" Binding="{Binding description}"/>
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
窗口xaml:
借方類(密鑰屬性用於創建代碼優先數據庫):
class Debit
{
[Key]
public int Id { get; set; }
public int amount { get; set; }
public string storeName { get; set; }
public DateTime debitDate { get; set; }
public DateTime chargeDate { get; set; }
public string description { get; set; }
public creditCard creditCardNumber { get; set; }
public bool charged { get; set; }
}
有任何想法嗎?
如果您的目標是在沒有您不需要的兩列的情況下顯示您的數據,我建議采用更簡單的方法,即明確指定網格的列:
<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="amount" Binding="{Binding amount}"/>
<DataGridTextColumn Header="charge date" Binding="{Binding chargeDate}"/>
<DataGridCheckBoxColumn Header="charged" Binding="{Binding charged}"/>
<DataGridTextColumn Header="store name" Binding="{Binding storeName}"/>
<DataGridTextColumn Header="purchase date" Binding="{Binding debitDate}"/>
<DataGridTextColumn Header="description" Binding="{Binding description}"/>
</DataGrid.Columns>
</DataGrid>
請注意AutoGenerateColumns="False"
屬性。
如果我想控制單元格的渲染方式,我只會使用數據模板。 如果您對默認演示文稿感到滿意,我認為您不需要模板。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.