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.