Реализация сведений о строках с помощью XamDataGrid

Прямо сейчас я пытаюсь реализовать что-то вроде функции RowDetails WPF DataGrid в 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>

Я изучил форумы по инфраструктуре (были предложения использовать второй вариант) и Интернет, но пока не нашел решения.


person Community    schedule 12.07.2011    source источник


Ответы (1)


В этой теме есть пример, который можно использовать в качестве примера того, как это сделать: 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>
person alhalama    schedule 25.02.2012