ViewModel不在datagrid中显示元素

时间:2010-11-30 20:42:38

标签: c# viewmodel

如何停止WPF DataGrid表单自动显示绑定到数据网格的元素。

我有这个视图模型,我不希望它显示元素“历史”。 我尝试过[Display(AutoGenerateField = false)],但它不起作用。

我在这里的方式将显示Lead,Calls,LastCall,然后再显示所有元素。

<DataGrid ItemsSource="{Binding Leads}" Margin="0" FontSize="20">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Lead" Binding="{Binding Lead}" Width="150" />
        <DataGridTextColumn Header="Calls" Binding="{Binding Calls}" Width="150" />
        <DataGridTextColumn Header="LastCall" Binding="{Binding LastCall}" Width="*" />
    </DataGrid.Columns>

查看模型

public class LeadViewModel : ViewModel
{
    [Display(AutoGenerateField = false)]
    public int Lead { get; set; }
    [Display(AutoGenerateField = false)]
    public int Calls 
    { 
        get
        {
            return History.Count();
        }
    }
    [Display(AutoGenerateField = false)]
    public int EndCalls
    {
        get
        {
            return (from h in History
                    where h.DailTime.End != null
                    select h).Count();
        }
    }
    [Display(AutoGenerateField = false)]
    public int Jobs
    {
        get
        {
            return (from h in History
                    where h.DailTime.End != null
                    select h.ProjectJob).Distinct().Count();
        }
    }
    [Display(AutoGenerateField = false)]
    public DateTime? LastCall
    { 
        get
        {
            return (from h in History
                    orderby h.DailTime.Start descending
                    select h.DailTime.Start).FirstOrDefault();
        } 
    }
    [Display(AutoGenerateField = false)]
    public IQueryable<DailHistory> History { get; set; }
}

1 个答案:

答案 0 :(得分:0)

Bij将AutoGenerateColumns属性设置为false:

<DataGrid AutoGenerateColumns="False">

</DataGrid>

默认为true,因此将itemssource的所有列添加到datagrid。