使用DataGrid内的DataTrigger绑定到DataRowView

时间:2011-05-09 18:42:59

标签: wpf xaml data-binding datagrid datarowview

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

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

datagrid plain

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

datagrid styled

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

<DataTemplate x:Key="MiddleDataGridCellTemplate">
 <Grid>
  <Image Name="CenterImage"
   HorizontalAlignment="Center"
   VerticalAlignment="Center"/>     
 </Grid>
 <DataTemplate.Triggers>
  <DataTrigger Binding="{Binding Row.ItemArray/TaskStatusName}"
   Value="In Progress">
   <Setter TargetName="CenterImage"
    Property="Source"
    Value="/besoControlLibrary;component/Resources/Spreadsheet_CheckedOut.png" />
  </DataTrigger>
 </DataTemplate.Triggers>
</DataTemplate>

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

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

此外,这些值来自DataTable,它是DataGrid的上下文。



2 个答案:

答案 0 :(得分:1)

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

{Binding TaskStatusName}

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

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

答案 1 :(得分:0)