Реализация деталей строки с помощью XamDataGrid - PullRequest
3 голосов
/ 12 июля 2011

Сейчас я пытаюсь внедрить что-то вроде функции 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>

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

1 Ответ

3 голосов
/ 26 февраля 2012

В этой теме есть пример, который можно использовать в качестве примера для достижения этой цели: http://community.infragistics.com/forums/p/43348/238054.aspx

Обратите внимание, что образец Алекса, предоставленный в потоке, использует связанное поле для деталей строки, и если у вас нет поля для привязки, вы можете использовать вместо него 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>
...