2011-07-12 75 views
3

現在我正試圖將WPF DataGrid的RowDetails功能部件實現到XamDataGrid中。我曾嘗試做(現在沒到):使用XamDataGrid實現行詳細信息

1)更換ExpandableFieldRecordPresenterStyle

在我用我自己的風格 這種風格坐在窗前資源替代ExpandableFieldRecordPresenterStyle的FieldSettings並設置模板/ TemplateGridView(嘗試兩個)屬性到我自己的DataTemplate/ControlTemplate(都嘗試過)。

這並沒有工作,雖然風格設置我沒有看到任何視覺represantion的變化。

2)更換DataRecordPresenterStyle

在我用我自己的風格取代DataRecordPresenterStyle的FieldLayoutSettings。這和前面的方法一樣,並且工作正常。但是,現在我必須重新實現原始的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論壇(已有建議去的第二個選項)和互聯網,並沒有找到一個解決辦法。

回答

3

有在這個線程的例子,可以用來作爲對如何做到這一點的例子: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>