现在,我正在尝试将WPF DataGrid的RowDetails功能实现到XamDataGrid中。我尝试做的事情(直到现在都失败了):
1.)替换ExpandableFieldRecordPresenterStyle
在FieldSettings中,我用自己的样式替换ExpandableFieldRecordPresenterStyle
此样式位于窗口资源中,并将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>
我研究了基础设施论坛(有第二种选择的建议)和互联网,但尚未找到解决方案。
最佳答案
此线程中有一个示例可以用作有关如何完成此操作的示例: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>
关于wpf - 使用XamDataGrid实现行详细信息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6666244/