使用 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行背景?