我的DataGrid绑定集合列出现两次

时间:2015-10-26 12:11:36

标签: wpf datagrid

我有View Model

public class Person
{
    public bool Selected;
    public string Name;  
    public bool IsMaried;
    public DataTime bDay;
}

List<Person> col;

这是我的DataGrid

<DataGrid
    Grid.Row="1"
    Name="dataGrid"
    ItemsSource="{Binding col}">
    <DataGrid.Columns>
        <DataGridTemplateColumn Width="60" Header="Select" SortMemberPath="IsSelected">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <StackPanel>
                        <CheckBox  IsChecked="{Binding Selected}" />
                        <Image/>
                    </StackPanel>

                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>

        <DataGridTextColumn 
            Header="Name"
            Binding="{Binding Name}" 
            Width="180"/>
    </DataGrid.Columns>
</DataGrid>

我有几个问题:

  1. 为了配置列Width,我在<DataGrid.Columns>内添加了这些列,现在我可以看到我的Data Grid列,但如果我手动添加此列,则每列都会出现两次。< / p>

  2. 在我的Person课程中,我有另一位成员 - DataTime,我不想在DataGrid内看到,但添加Context Menu点击然后显示这个价值。如何从DataGrid

  3. 中删除它

1 个答案:

答案 0 :(得分:0)

您需要设置AutoGenerateColumns="False"并添加要手动显示的所有列。所以你的DataGrid可能是这样的:

<DataGrid Grid.Row="1"
            Name="dataGrid"
            ItemsSource="{Binding col}"
            AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Name" Binding="{Binding Name}" />
        <DataGridCheckBoxColumn Header="Selected" Binding="{Binding Selected}"/>
        <DataGridCheckBoxColumn Header="IsMaried" Binding="{Binding IsMaried}"/>
    </DataGrid.Columns>
</DataGrid>