2016-08-19 18 views
-2

私は、WPFのスタイル、テンプレートなどの複雑さが不必要に複雑になることについて、まだ非常に怒っています。私はこのような重複したXAMLコードを避けるために、どのように把握しようとしています:XAMLコードの簡略化

<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> 

私はこのような何かをしたい:

<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

DataGridControlの既定のスタイルを作成しますか? – Clemens

+0

ちょうど、この2つのDataGridControlsの重複コードを1つのWindowに書くのを避けることができます。これは、キーを使用してグローバルに定義することも、Windowリソースにローカルに定義することもできます。 –

+2

私は本当に問題が何であるかは分かりません.xaml、スタイル(別のスタイルに基づくことも、明示的かつ暗黙的に行うこともできます)、共通のxamlを持つ可能性のあるusercontrolsを再利用する方法はたくさんあります。いくつかの税関プロパティを再利用する場合は、プロパティを連結します。辞書では、テンプレートなどをキーで定義し、それらを使用することができます。たくさんの方法。 – adminSoftDK

答えて

2

xcdgのためのカスタムスタイルを作成します。設定DataGridControlをViewプロパティをFrameworkElementリソースディクショナリに格納し、StaticResourceで参照します。

ここでは、それは親グリッドリソースディクショナリに格納されます。

<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

これはまさに私が必要とするものですが、Xceed DataGridControlは複数のグリッドに対して同じビュー定義を持つことができませんので、x:Shared = "False"をスタイル定義に追加する必要があります。 –