データベース テーブルのアイテムを表示するために 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 に入力することで解決します。唯一の問題は、表示したくない列が 2 つあることです。必要な列でグリッドを生成する dataTemplate を作成しようとしましたが、それを datacontext にバインドすると、情報が表示されませんでした。
ここに私のデータテンプレートがあります:
<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:
Debit クラス (key 属性は codefirst データベース作成用です):
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; }
}
何か案は?