使用 DataGrid 内的 DataTrigger 绑定到 DataRowView

Posted

技术标签:

【中文标题】使用 DataGrid 内的 DataTrigger 绑定到 DataRowView【英文标题】:Binding to DataRowView with a DataTrigger inside of a DataGrid 【发布时间】:2011-05-09 18:42:59 【问题描述】:

我正在尝试为数据网格实现单元格模板。问题是,当我尝试绑定到 datagridview 中的对象时,我没有得到我期望的值。

 

这是没有样式的数据网格的样子:

datagrid plain

 

很简单,但是当我尝试使用带有触发器的单元格模板对其进行样式设置时,这就是我得到的(上面有 DAL.Task 的每个单元格都应该包含一个橙色圆圈):

datagrid styled

 

这是我用来设置网格样式的 xaml:

 

网格>
 
  数据模板>

 

我猜是“Binding Row.ItemArray/TaskStatusName”导致了问题,在datagridview中提取DAL.Task的TaskStatusName属性的正确方法是什么?

如果有帮助的话,我发现空白单元格的值是 DBNull。

 

此外,这些值来自作为 DataGrid 上下文的 DataTable。

【问题讨论】:

【参考方案1】:

DataContext 应该已经是您正在显示的对象,因此您应该能够将权利绑定到您想要的任何属性:

Binding TaskStatusName

在运行应用程序时,您可以通过查看输出窗口来获取更多信息。这里还有一个 DataGridTemplateColumn 的示例,这可能是您想要模仿的:

http://msdn.microsoft.com/en-us/library/system.windows.controls.datagridtemplatecolumn%28v=vs.95%29.aspx

【讨论】:

这是我按照您的建议执行时的输出:System.Windows.Data 错误:40:BindingExpression 路径错误:在 'object' ''DataRowView' 上找不到 'TaskStatusName' 属性(HashCode=15157836 )'。绑定表达式:路径=任务状态名称; DataItem='DataRowView' (HashCode=15157836);目标元素是'ContentPresenter'(名称='');目标属性是“NoTarget”(类型“对象”)【参考方案2】:

我解决了问题,解决方法在这里:

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/7fe562f4-739c-45df-bea3-557abd80c63d

【讨论】:

以上是关于使用 DataGrid 内的 DataTrigger 绑定到 DataRowView的主要内容,如果未能解决你的问题,请参考以下文章

单击rowheader内的togglebutton时如何更改Datagrid行背景?

更新 AJAX 手风琴内的 DataGrid

单击行材料-ui DataGrid内的按钮时如何设置行数据?

手风琴高度问题中的WPF DataGrid

有界数据更改后重新排序 WPF DataGrid

WPF:关于ScrollViewer中嵌套Datagrid的问题