Implementing row details with XamDataGrid
Right now i am trying to implement something like the RowDetails feature of the WPF DataGrid into the XamDataGrid. What i have tried to do (and failed until now):
1.) Replace ExpandableFieldRecordPresenterStyle
In the FieldSettings i replace the ExpandableFieldRecordPresenterStyle with my own Style This style is sitting in the window resources and sets the Template / TemplateGridView (tried both) properties to my own DataTemplate / ControlTemplate (tried both).
This did not work, although the style was set i did not see any changes in the visual represantion.
2.) Replace the DataRecordPresenterStyle
In the FieldLayoutSettings i replace the DataRecordPresenterStyle with my own style. This does the same as the previous method and it works. However, now i have got to re-implement the original DataPresenterStyle, since i just want to add the row details control, but leave the rest unchanged. Th开发者_运维技巧is is where i am stuck right now.
In both variants my style and template are pretty simple:
<ControlTemplate x:Key="NestedRecordTemplate">
<TextBlock Text="test"/>
</ControlTemplate>
<Style x:Key="NestedRecordStyle" TargetType="{x:Type igDP:DataRecordPresenter}">
<Setter Property="Template" Value="{StaticResource NestedRecordTemplate}" />
</Style>
I have researched the infragstics forums (there has been suggestions to go with the second option) and the internet and have not found a solution yet.
There is an example in this thread that could be used as an example on how to accomplish this: http://community.infragistics.com/forums/p/43348/238054.aspx
Note that the sample Alex provided in the thread uses a bound field for the row details and if you don't have a field to bind to, you can use an UnboundField instead. The following shows an example of what this might look like:
<igDP:XamDataGrid x:Name="XamDataGrid1">
<igDP:XamDataGrid.FieldLayoutSettings>
<igDP:FieldLayoutSettings AutoGenerateFields="False"/>
</igDP:XamDataGrid.FieldLayoutSettings>
<igDP:XamDataGrid.FieldLayouts>
<igDP:FieldLayout>
<igDP:FieldLayout.Settings>
<igDP:FieldLayoutSettings AutoArrangeCells="Never"/>
</igDP:FieldLayout.Settings>
<igDP:FieldLayout.Fields>
<igDP:Field Name="EmployeeID" Row="0" Column="0"/>
<igDP:Field Name="Name" Row="0" Column="1"/>
<igDP:Field Name="OnSite" Row="0" Column="2"/>
<igDP:Field Name="DateOfHire" Row="0" Column="3"/>
<igDP:Field Name="Department" Row="0" Column="4"/>
<igDP:Field Name="Site" Row="0" Column="5"/>
<igDP:UnboundField Name="RowDetails" Row="1" Column="0" ColumnSpan="6">
<igDP:UnboundField.Settings>
<igDP:FieldSettings>
<igDP:FieldSettings.LabelPresenterStyle>
<Style TargetType="{x:Type igDP:LabelPresenter}">
<Setter Property="Visibility" Value="Collapsed"/>
</Style>
</igDP:FieldSettings.LabelPresenterStyle>
<igDP:FieldSettings.CellValuePresenterStyle>
<Style TargetType="{x:Type igDP:CellValuePresenter}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type igDP:CellValuePresenter}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="Row Details for "/>
<TextBlock Text="{Binding DataItem.Name}"/>
</StackPanel>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding IsSelected}" Value="False">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
<DataTrigger Binding="{Binding IsSelected}" Value="True">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</igDP:FieldSettings.CellValuePresenterStyle>
</igDP:FieldSettings>
</igDP:UnboundField.Settings>
</igDP:UnboundField>
</igDP:FieldLayout.Fields>
</igDP:FieldLayout>
</igDP:XamDataGrid.FieldLayouts>
</igDP:XamDataGrid>
精彩评论