Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF DataGrid数据和列不可见_C#_Wpf_Datagrid - Fatal编程技术网

C# WPF DataGrid数据和列不可见

C# WPF DataGrid数据和列不可见,c#,wpf,datagrid,C#,Wpf,Datagrid,我所做的是设置具有多行选择支持的datagrid。然而,问题是当AutoGenerateColumns设置为false时,多行选择有效,但我从数据库上传的数据不显示。当我将AutoGenerateColumns切换为true时,我可以看到数据,但单击多选功能停止工作 以下是xaml代码: <DataGrid x:Name="Hello" ItemsSource="{Binding Path=Albums}" Grid.Row="0"

我所做的是设置具有多行选择支持的datagrid。然而,问题是当
AutoGenerateColumns
设置为false时,多行选择有效,但我从数据库上传的数据不显示。当我将
AutoGenerateColumns
切换为true时,我可以看到数据,但单击多选功能停止工作

以下是xaml代码:

<DataGrid x:Name="Hello" ItemsSource="{Binding Path=Albums}"
              Grid.Row="0"
              AutoGenerateColumns="True"  SelectionMode="Extended" Loaded="dgCustomers_Loaded">
                    <DataGrid.Columns>
                        <DataGridCheckBoxColumn ElementStyle="{DynamicResource MetroDataGridCheckBox}"
                                    EditingElementStyle="{DynamicResource MetroDataGridCheckBox}"
                                    Header="IsSelected"
                                    Binding="{Binding RelativeSource={RelativeSource AncestorType=DataGridRow}, Path=IsSelected, Mode=OneWay}"
                                    />
                    </DataGrid.Columns>
                </DataGrid>

我认为在XAML中不能同时自动生成列和显式指定列。我相信是这样或那样。我相信您必须将
AutoGenerateColumns
设置为false,并为每个列指定一个绑定。

当您将AutoGenerate设置为false时,数据不会显示,因为您需要明确标识要显示的“什么”数据。您需要添加自己的列,并将它们相应地绑定到实体中的属性。这有点烦人。谢谢你的迅速回复。
private void dgCustomers_Loaded(object sender, RoutedEventArgs e)
    {

        var grid = sender as DataGrid; //Creates its self as an object
        grid.ItemsSource = CustomerDataAdapter.GetData(); //Shows all of the data in the Customer table
    }