2008-09-16 6 views
2

私は、いくつかのWPFコントロール(GridViewHeader)用の独自のコントロールテンプレートを用意する必要があります。ブレンドしたGridViewHEaderのコントロールテンプレートを見てみると、いくつかのケースではそのコントロールだけのためにスタイリングされているいくつかのコントロール(列間のこのスプリッター)から集計されます。 これらのテンプレートは、明らかにシステム... dllのどこかに隠されたリソースです(またはテーマdllの中ではいくらかです)。 私の質問は、 - あらかじめ定義されたテンプレートを参照する方法はありますか?これまでのところ、自分のリソースに自分自身のコピーを持ってしまったのですが、私はそのアプローチが嫌いです。ここマイクロソフトのアセンブリで定義されているコントロールテンプレートを参照することはできますか?

は、サンプルシナリオです: 私はGridViewColumnHeader持っている:これまで

 <Style TargetType="{x:Type GridViewColumnHeader}" x:Key="gridViewColumnStyle"> 
      <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
      <Setter Property="VerticalContentAlignment" Value="Stretch"/> 
      <Setter Property="Background" Value="{StaticResource GridViewHeaderBackgroundColor}"/> 
      <Setter Property="BorderBrush" Value="{StaticResource GridViewHeaderForegroundColor}"/> 
      <Setter Property="BorderThickness" Value="0"/> 
      <Setter Property="Padding" Value="2,0,2,0"/> 
      <Setter Property="Foreground" Value="{StaticResource GridViewHeaderForegroundColor}"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type GridViewColumnHeader}"> 
         <Grid SnapsToDevicePixels="true" Tag="Header" Name="Header"> 
          <ContentPresenter Name="HeaderContent" Margin="0,0,0,1" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> 
          <Canvas> 
           <Thumb x:Name="PART_HeaderGripper" Style="{StaticResource GridViewColumnHeaderGripper}"/> 
          </Canvas> 
         </Grid> 
         <ControlTemplate.Triggers> 
          <Trigger Property="IsMouseOver" Value="true"> 
          </Trigger> 
          <Trigger Property="IsPressed" Value="true"> 
           <Setter TargetName="HeaderContent" Property="Margin" Value="1,1,0,0"/> 
          </Trigger> 
          <Trigger Property="Height" Value="Auto"> 
           <Setter Property="MinHeight" Value="20"/> 
          </Trigger> 
          <Trigger Property="IsEnabled" Value="false"> 
           <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
          </Trigger> 
         </ControlTemplate.Triggers> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

- 面白い何を、私はまっすぐテンプレートにいくつかの余分な機能を追加したい、と言う - 私はcotnentプレゼンターを残したいですそれの横に私のコントロールを追加し、フレームワークからデフォルトでThumbを残したいと思います。

親指のテーマは以下のようになります。: - 私はへの参照を取得することを好むと思いながら、そのスタイルを貼り付ける&をコピーする必要があり、これまで

<Style x:Key="GridViewColumnHeaderGripper" 
     TargetType="{x:Type Thumb}"> 
    <Setter Property="Canvas.Right" 
      Value="-9"/> 
    <Setter Property="Width" 
      Value="18"/> 
    <Setter Property="Height" 
      Value="{Binding Path=ActualHeight,RelativeSource={RelativeSource TemplatedParent}}"/> 
    <Setter Property="Padding" 
      Value="0"/> 
    <Setter Property="Background" 
      Value="{StaticResource GridViewColumnHeaderBorderBackground}"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Thumb}"> 
       <Border Padding="{TemplateBinding Padding}" 
         Background="Transparent"> 
        <Rectangle HorizontalAlignment="Center" 
           Width="1" 
           Fill="{TemplateBinding Background}"/> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

を私はマイクロソフトhereが提供するテーマを見つけましたそれは資源からのものです。

答えて

2

変更の対象となる100%内部リソースを参照することは保守できません。単にコピーする方がよいでしょう。

0

これらを参照することは可能ですが、パウルベットが言ったように、変更することはできません。また、あなたがしていることが本当に「正しい」ものであるかどうかを検討してください。なぜこれを正確に行う必要があるのか​​を説明するために質問を編集できますか?

関連する問題