Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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
使用ADO.net实体数据模型的DataGrid数据绑定_.net_Wpf_C# 4.0_Sql Server Ce_Ado.net Entity Data Model - Fatal编程技术网

使用ADO.net实体数据模型的DataGrid数据绑定

使用ADO.net实体数据模型的DataGrid数据绑定,.net,wpf,c#-4.0,sql-server-ce,ado.net-entity-data-model,.net,Wpf,C# 4.0,Sql Server Ce,Ado.net Entity Data Model,我有一个基于实体数据模型的应用程序,它使用SQL Server CE 3.5作为数据存储 在数据库中,我有一些客户,每个客户都有一些订单。这是一个简化的概述: 在我的WPF窗口中,我插入了一个DataGrid,我想在其中列出所有客户及其姓名和地址。大概是这样的: 所以我写了这个XAML: <DataGrid Grid.Row="0" Name="customersDataGrid" AutoGenerateColumns="False" CanUserResizeColumns="Tr

我有一个基于实体数据模型的应用程序,它使用SQL Server CE 3.5作为数据存储

在数据库中,我有一些客户,每个客户都有一些订单。这是一个简化的概述:

在我的WPF窗口中,我插入了一个
DataGrid
,我想在其中列出所有客户及其姓名和地址。大概是这样的:

所以我写了这个XAML:

<DataGrid Grid.Row="0" Name="customersDataGrid" AutoGenerateColumns="False" CanUserResizeColumns="True" AllowDrop="True" Drop="Window_Drop" DragEnter="Window_DragEnter">
   <DataGrid.Columns>
       <DataGridTemplateColumn Header="Name" Width="Auto" IsReadOnly="True" />
       <DataGridTemplateColumn Header="Address" Width="Auto" IsReadOnly="True" />
   </DataGrid.Columns>
</DataGrid>


但是现在,如何将列Name与数据模型中客户的属性
Name
连接起来?

当您使用DataGridTemplateColumn时,可以将DataTemplate放在那里。。(注意:您可能不需要“数据:”前缀。)



谢谢您的回答!我试过了,但还是不行。没有错误,没有例外。我可以告诉XAML,在某些方面,什么是要使用的上下文吗?我该怎么做?@Dev它不起作用的原因是datagridview实际上没有绑定到数据源。您需要查询数据库,并将结果放入
列表中。将此列表作为代码隐藏中的属性公开,并使用xaml中DataGrid内的代码
DataGrid.ItemsSource={Binding ListOfCustomers}
绑定到它。最好在WPF应用程序中使用名为MVVM的框架。如果您使用这个框架,您的代码将是惊人的。谢谢我已经创建了属性
customersList
private List
)。我用
窗口加载的
方法对其进行了估值。我验证了
customersList
是否包含正确的值。然后,我将属性
ItemsSource=“{Binding customersList}”
添加到XAML中的
DataGrid
标记中。我忘了什么?窗口加载事件发生在绑定解决后。这意味着您必须a)在加载之前给CustomerList赋值(在构造函数中执行以确保),或者b)实现INotifyPropertyChanged接口,该接口将在每次属性更改时告诉xaml从属性获取新值。选项a)将花费最少的时间,但如果您想让列表进行大量更改,选项b是最好的。这似乎需要做很多工作,但相信我,从长远来看,这会为您节省大量时间,尤其是在您的程序甚至是半复杂的情况下。@Dev您解决问题了吗?如果你愿意,我可以给你编一些代码
 <data:DataGridTemplateColumn Header="Name">
        <data:DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Name}">
            </DataTemplate>
        </data:DataGridTemplateColumn.CellTemplate> 
        <data:DataGridTemplateColumn.CellEditingTemplate>
            <DataTemplate>
                <TextBox Text="{Binding Name}">
            </DataTemplate>
        </data:DataGridTemplateColumn.CellEditingTemplate> 
    </data:DataGridTemplateColumn>