wpf datagrid observablecollection
Posted
技术标签:
【中文标题】wpf datagrid observablecollection【英文标题】: 【发布时间】:2009-11-10 01:45:18 【问题描述】:我正在使用 WPF 开发一个大型数据库应用程序。到目前为止,我已经能够使用 Link to Sql 类创建一个 DataContext,将其存储在 ObservableCollection 中,并将其作为 DataContext 提供给我的 DataGrid。
我正在尝试读/写的 SQL 中的主表如下所示
Work_Table
WorkID[pk int] | frn_CustomerID[fk int] | frn_UserID[fk int] | DateCreated[datetime] | etc...
Customers_Table
CustomerID[pk int] | CustomerName[varchar] | etc...
Users_Table
UserID[pk int] | UserName[varchar] | etc...
我想通过使用 DataTemplates 和内联编辑在我的 DataGrid 中表示这些列
WorkID | CustomerName | UserName | DateCreated
我是否必须使用包含所有这些列和 ID 的代理类?我应该修改我的 observablecollection,还是应该根据事件处理代码中的所有内容?我喜欢数据网格执行基本 CRUD 的事实,这实际上很棒,因为我目前处于时间限制。
我对 WPF 非常陌生,尤其是对 DataGrid 控件。我也阅读过有关 IValueConverters 的信息,但我不确定这是否是可行的方法以及我可能会遇到什么性能问题。
如果有人能指出我正确的方向,到目前为止,我发现的所有搜索都是简单的表,没有使用外键等。
更新 到目前为止,我找到了这段代码并取得了一些进展,但现在问题是排序。
<toolkit:DataGridTemplateColumn Header="Customer Name">
<toolkit:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="Binding Customers, Source=StaticResource MyDataContext" DisplayMemberPath="CustomerName" SelectedValuePath="Customer_ID" SelectedValue="Binding Path=Customer_ID, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged" />
</DataTemplate>
</toolkit:DataGridTemplateColumn.CellTemplate>
</toolkit:DataGridTemplateColumn>`
这确保了能够显示“客户名称”而不仅仅是客户 ID。当然,我想将基础数据保留为整数,但显示用户可读的描述。现在的问题是排序。我只是想知道是否有办法非常干净地做到这一点。我认为这是一种常见情况,但我没有成功找到解决方案。我想我可能正在寻找错误的搜索词。
为了简化事情,这是我目前所做的:
1.) 我有一个名为 Work_Table 的表,其中包含 Work_ID、Customer_ID、Employee_ID 等。 2.) 我有另一个名为 Customers_Table 的查找表,其中包含 Customer_ID、CustomerName 等。 3.) 我必须在 DataGrid 中显示这些列 - Work_ID、CustomerName 等...
我的 DataGrid 绑定到一个 ObservableCollection。在我尝试组合框方法之前,它显示了 Work_ID、Customer_ID、Employee_ID 等。基本上是整个表及其列。
问题是我执行第 3 项的最佳方法是什么。)?我应该将我的 DataGrid 绑定到只包含我需要的列的自定义 ObservableCollection 吗? IValueConverter 是另一种可行的解决方案,因此当 DataGrid 即将显示 Customer_ID 时,它将显示 CustomerName 吗?
在我规范化数据库之前,我没有遇到过这个问题。
【问题讨论】:
【参考方案1】:我想这可能就是你要找的。p>
http://blogs.msdn.com/vinsibal/archive/2008/08/19/wpf-datagrid-stock-and-template-columns.aspx
【讨论】:
您好韦恩先生,感谢您的回复,这确实是一个非常有帮助的博客。我想我现在明白我要寻找什么了。我将重新发布我的问题。再次感谢!以上是关于wpf datagrid observablecollection的主要内容,如果未能解决你的问题,请参考以下文章