2010-08-12 5 views
0

Je veux poser une question à propos de ce code son code XAML simple comme indiqué ci-dessous.héritage de propriété wpf

<Window x:Class="WpfApplication15.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525" Background="Orange" FontStyle="Italic"> 
<StackPanel> 
    <Label>blo</Label> 
    <Button>hi</Button> 
    <Button>hi2</Button> 
</StackPanel> 
</Window> 

donc simplement que nous pouvons imaginer, les étiquettes orange fond, mais la couleur de fond du bouton ne sera pas d'orange sera par défaut, mais tous les contrôles FontStyle seront en italique, donc la question est que! pourquoi fontstyle de tout le contrôle sous la racine a affecté cela mais l'arrière-plan du bouton ne l'a pas?

Répondre

0

Je suppose que le ControlTemplate du bouton définit explicitement l'arrière-plan en ce qui concerne Windows ui-guidelines. Par conséquent, l'héritage de propriété est rompu pour le Control.BackgroundProperty.

Pour le prouver, peut-être this outil aidera.

+0

donc ce que je dois mémoriser les propriétés peuvent être cassées ou non! J'ai besoin de réponse solide logiquement – user418308

0

Telle est la définition du modèle de bouton par défaut, Microsoft_Windows_Themes: ButtonChrome fait le tour

    <ControlTemplate TargetType="{x:Type Button}"> 
        <Microsoft_Windows_Themes:ButtonChrome x:Name="Chrome" SnapsToDevicePixels="true" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" RenderDefaulted="{TemplateBinding IsDefaulted}" RenderMouseOver="{TemplateBinding IsMouseOver}" RenderPressed="{TemplateBinding IsPressed}"> 
         <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" RecognizesAccessKey="True"/> 
        </Microsoft_Windows_Themes:ButtonChrome> 
+0

désolé mais je ne comprends pas! Je n'ai toujours pas eu ma réponse. – user418308

+0

le bouton par défaut est fait de Microsoft_Windows_Themes: ButtonChrome et là ils donnent une staticresource pour l'arrière-plan c'est pourquoi le bouton ne montre pas l'arrière-plan. –