2016-08-19 4 views
-2

Ich bin immer noch sehr wütend darüber, wie unnötig kompliziert sind Stile, Vorlagen und ähnliche Dinge in WPF. Ich versuche, herauszufinden, wie wie diese doppelte XAML-Code zu vermeiden:Vereinfachen XAML-Code

<xcdg:DataGridControl Grid.Row="1"> 
    <xcdg:DataGridControl.View> 
    <xcdg:TableflowView UseDefaultHeadersFooters="False"> 
     <xcdg:TableflowView.FixedHeaders> 
     <DataTemplate> 
      <xcdg:ColumnManagerRow/> 
     </DataTemplate> 
     </xcdg:TableflowView.FixedHeaders> 
    </xcdg:TableflowView> 
    </xcdg:DataGridControl.View> 

    </xcdg:DataGridControl> 
    <xcdg:DataGridControl Grid.Row="1" Grid.Column="1"> 
    <xcdg:DataGridControl.View> 
     <xcdg:TableflowView UseDefaultHeadersFooters="False"> 
     <xcdg:TableflowView.FixedHeaders> 
      <DataTemplate> 
      <xcdg:ColumnManagerRow/> 
      </DataTemplate> 
     </xcdg:TableflowView.FixedHeaders> 
     </xcdg:TableflowView> 
    </xcdg:DataGridControl.View> 
    </xcdg:DataGridControl> 

ich so etwas wie dieses haben wollen:

<ViewSettings> 
<xcdg:DataGridControl.View> 
    <xcdg:TableflowView UseDefaultHeadersFooters="False"> 
    <xcdg:TableflowView.FixedHeaders> 
     <DataTemplate> 
     <xcdg:ColumnManagerRow/> 
     </DataTemplate> 
    </xcdg:TableflowView.FixedHeaders> 
    </xcdg:TableflowView> 
</xcdg:DataGridControl.View> 
</ViewSettings> 

<xcdg:DataGridControl Grid.Row="1" Grid.Column="1"> 
    ViewSettings 
<xcdg:DataGridControl/> 
<xcdg:DataGridControl Grid.Row="1" Grid.Column="1"> 
    ViewSettings 
<xcdg:DataGridControl/> 
+1

Erstellen Sie einen Standardstil für DataGridControl? – Clemens

+0

Nur etwas, das vermeiden wird, diesen doppelten Code für diese zwei DataGridControls in einem Fenster zu schreiben. Sie kann entweder global mit Schlüssel oder lokal in Window-Ressourcen definiert werden. –

+2

Ich sehe nicht wirklich, was das Problem ist, gibt es viele Möglichkeiten zur Wiederverwendung XAML, Stile (sie können auf anderen Stilen basieren, können auch explizit und implizit erfolgen), Benutzersteuerelemente, die gemeinsame XAML in ihnen haben könnte. Angehängte Eigenschaften, wenn Sie einige Zolleigenschaften wiederverwenden möchten. Wörterbücher können Sie Vorlagen usw. mit Schlüsseln definieren und diese verwenden. Viele Möglichkeiten. – adminSoftDK

Antwort

2

einen benutzerdefinierten Stil für xcdg erstellen: DataGridControl, die gesetzt die Zeigen Sie die Eigenschaft an, speichern Sie sie in einem FrameworkElement-Ressourcenwörterbuch, und verweisen Sie darauf mit StaticResource.

Hier wird es im Ressourcenverzeichnis des übergeordneten Grids gespeichert.

<Grid> 
    <Grid.Resources> 
     <Style x:Key="datagrid_style" TargetType="{x:Type xcdg:DataGridControl}" > 
      <Setter Property="View"> 
       <Setter.Value> 
        <xcdg:TableflowView UseDefaultHeadersFooters="False"> 
         <xcdg:TableflowView.FixedHeaders> 
         <DataTemplate> 
          <xcdg:ColumnManagerRow/> 
         </DataTemplate> 
         </xcdg:TableflowView.FixedHeaders> 
        </xcdg:TableflowView> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    <Grid.Resources> 

    <xcdg:DataGridControl Grid.Row="1" Grid.Column="1" Style="{StaticResource datagrid_style}" /> 
    <xcdg:DataGridControl Grid.Row="1" Grid.Column="1" Style="{StaticResource datagrid_style}" /> 
</Grid> 
+0

Dies ist genau das, was ich brauche, aber Xceed DataGridControl kann nicht die gleiche Ansichtsdefinition für mehrere Grids haben, daher ist es notwendig, x: Shared = "False" zur Stildefinition hinzuzufügen. –