簡體   English   中英

DataGrid列XAML

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM