2008-09-16 3 views
2

J'ai un scénario où je dois fournir mon propre modèle de contrôle pour quelques contrôles WPF - c'est-à-dire GridViewHeader. Lorsque vous regardez le modèle de contrôle pour GridViewHEader dans blend, il est agrégé à partir de plusieurs autres contrôles, qui dans certains cas sont stylisés pour ce contrôle uniquement, c'est-à-dire ce séparateur entre les colonnes. ces modèles, sont évidemment des ressources cachées quelque part dans le système ... dll (ou somewhwere dans les thèmes dll). Donc, ma question est - est-il possible de faire référence à ces modèles prédéfinis? jusqu'à présent, j'ai fini par avoir mes propres copies d'entre eux dans mes ressources, mais je n'aime pas cette approche.Est-il possible de référencer des modèles de contrôle définis dans les assemblys de microsoft?

ici est Exemple de scénario: i ont un 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> 

jusqu'à présent - rien d'intéressant, mais dire, je veux ajouter quelques fonctionnalités supplémentaires directement dans le modèle - je quitterais présentateur cotnent comme est, ajouter mes contrôles à côté de lui et je voudrais laisser Thumb avec des défauts de cadre. J'ai trouvé des thèmes fournis par Microsoft here:

le thème de pouce ressemble à ce que:

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

jusqu'à présent - je dois copier & coller ce style, alors que je préfère faire référence à à partir de ressources.

Répondre

2

Le référencement de ressources internes 100% sujettes à modification n'est pas réparable - mieux vaut simplement le copier.

0

Il est possible de les référencer, mais comme l'a dit paulbetts, ce n'est pas recommandé car ils pourraient changer. Considérez également si ce que vous faites est vraiment «correct». Pouvez-vous éditer votre question pour expliquer pourquoi vous devez faire ceci exactement?

Questions connexes