Hi guys,
I am trying to display an image in a cell (UnboundField) of a XamDataGrid based on a value of another cell.
With a DataGrid I got it working like this:
<DataGrid Name="dataGrid" ItemsSource="{Binding}" > <DataGrid.Columns> <DataGridTemplateColumn Header="Text" Width="SizeToCells" IsReadOnly="True"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <Image Source="{Binding Path=id, Converter={StaticResource IdToImageConverter}, ConverterParameter='png'}" /> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns></DataGrid>
Could anyone help me with that in a XamDatagrid? This is my code which is not working, I guess the problem is the wrong RelativeSource in the ControlTemplate:
<UserControl.Resources> <local:IdToImageConverter x:Key="IdToImageConverter" /> <Style x:Key="IconCellStyle" TargetType="{x:Type igDP:CellValuePresenter}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type igDP:CellValuePresenter}"> <Grid> <Image Source="{Binding Path=id, Converter={StaticResource IdToImageConverter}, ConverterParameter=png, RelativeSource={RelativeSource AncestorType={x:Type igDP:XamDataGrid}}}" /> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style></UserControl.Resources><igDP:XamDataGrid Name="xamDataGrid" DataSource="{Binding}" > <igDP:XamDataGrid.FieldLayouts> <igDP:FieldLayout> <igDP:FieldLayout.Fields> <igDP:UnboundField Label="Text"> <igDP:UnboundField.Settings> <igDP:FieldSettings CellValuePresenterStyle="{StaticResource IconCellStyle}" /> </igDP:UnboundField.Settings> </igDP:UnboundField> </igDP:FieldLayout.Fields> </igDP:FieldLayout> </igDP:XamDataGrid.FieldLayouts></igDP:XamDataGrid>
Thanks a lot and kindregards!
Hi Gawain,
You don't actually need a RelativeSource binding there. The datacontext of a CellValuePresenter is a DataRecord. Inside DataRecord there is a property called DataItem which represents your underyling row object. All you need is a binding to DataItem.id.
Thanks, this is perfectly workig. Two more question:
Regards!