现在我正在尝试将类似WPF DataGrid的RowDetails功能实现到XamDataGrid中。我试图做的事情(直到现在才失败):
1。)替换ExpandableFieldRecordPresenterStyle
在FieldSettings中,我将ExpandableFieldRecordPresenterStyle替换为我自己的Style 此样式位于窗口资源中,并将Template / TemplateGridView(尝试过两者)属性设置为我自己的DataTemplate / ControlTemplate(两者都尝试过)。
这不起作用,虽然风格设定但我没有看到视觉上的任何变化。
2.。)替换DataRecordPresenterStyle
在FieldLayoutSettings中,我用自己的样式替换DataRecordPresenterStyle。这与前一种方法相同,并且有效。但是,现在我必须重新实现原始DataPresenterStyle,因为我只想添加行详细信息控件,但保持其余不变。这就是我现在被困住的地方。
在两种变体中,我的风格和模板都非常简单:
<ControlTemplate x:Key="NestedRecordTemplate">
<TextBlock Text="test"/>
</ControlTemplate>
<Style x:Key="NestedRecordStyle" TargetType="{x:Type igDP:DataRecordPresenter}">
<Setter Property="Template" Value="{StaticResource NestedRecordTemplate}" />
</Style>
我已经研究过infragstics论坛(已经提出了第二种选择的建议)和互联网,还没有找到解决方案。
答案 0 :(得分:3)
此线程中有一个示例可用作如何完成此操作的示例:http://community.infragistics.com/forums/p/43348/238054.aspx
请注意,线程中提供的样本Alex使用绑定字段来显示行详细信息,如果没有要绑定的字段,则可以使用UnboundField。以下显示了一个示例:
<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>