在xamDataGrid中显示Image的BInding问题

时间:2013-10-03 07:24:30

标签: wpf xamdatagrid

我想在XamDataGrid的一个字段中显示图像。 我拥有的图片的路径是我Model中的一个属性。我能够使用普通的WPF DataGrid显示图像,但是遇到了XamDataGrid的问题。(参见第2点)

  1. 将ItemImage属性绑定到XamDataGrid字段。

        <igDP:Field.Settings>
             <igDP:FieldSettings AllowEdit="False">
               <igDP:FieldSettings.CellValuePresenterStyle>
                      <Style TargetType="{x:Type igDP:CellValuePresenter}" >
                          <Setter Property="Template">
                             <Setter.Value>
                                   <ControlTemplate TargetType="{x:Type igDP:CellValuePresenter}">
                                      <Grid>
                                         <Image 
                                           Source="{Binding RelativeSource={RelativeSource AncestorType=                     {x:Type igDP:XamDataGrid}}, Path=ItemImage, Converter={StaticResource ImageConverter}}"/>
                                      </Grid>
                                  </ControlTemplate>
                            </Setter.Value>
                          </Setter>
                     </Style>
             </igDP:FieldSettings.CellValuePresenterStyle>
         </igDP:FieldSettings>
       </igDP:Field.Settings>
    

    `

  2. 使用普通的WPF数据网格。

    <DataGridTemplateColumn>
         <DataGridTemplateColumn.CellTemplate>
              <DataTemplate>
                     <Image Source="{Binding ItemImage, Converter={StaticResource ImageConverter}}" />
              </DataTemplate>
         </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
    
  3. 请告诉我。如果我必须在步骤1中做出任何改变。

1 个答案:

答案 0 :(得分:1)

xamDataGrid中每个字段的DataContext是DataRecord对象,其中的属性DataItem包含您的对象,因此绑定应该像这样定义:

 <igDP:Field.Settings>
     <igDP:FieldSettings AllowEdit="False">
       <igDP:FieldSettings.CellValuePresenterStyle>
              <Style TargetType="{x:Type igDP:CellValuePresenter}" >
                  <Setter Property="Template">
                     <Setter.Value>
                           <ControlTemplate TargetType="{x:Type igDP:CellValuePresenter}">
                              <Grid>
                                 <Image 
                                   Source="{Binding DataItem.ItemImage, Converter={StaticResource ImageConverter}}"/>
                              </Grid>
                          </ControlTemplate>
                    </Setter.Value>
                  </Setter>
             </Style>
     </igDP:FieldSettings.CellValuePresenterStyle>
 </igDP:FieldSettings>