2017-06-10 1 views
0

Après avoir créé ControlTemplate pour la fenêtre Wpf, cela fonctionne correctement en mode Création. Mais quand je cours, il ne montre pas la bordure rouge extérieure.wpf Le modèle de contrôle ne fonctionne pas au moment de l'exécution

ici est mon code

<Window x:Class="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" 
WindowStyle="None" 
AllowsTransparency="True" 
WindowStartupLocation="CenterScreen" 
> 
<Window.Resources> 
    <Style TargetType="Window"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="Window"> 

        <Border Padding="20" Background="red"> 
         <ContentPresenter Content="{TemplateBinding Content}" /> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Window.Resources> 
<WindowChrome.WindowChrome> 
    <WindowChrome 
     ResizeBorderThickness="10" 
     CaptionHeight="40" 
     CornerRadius="0" 
     GlassFrameThickness="0" 
     /> 
</WindowChrome.WindowChrome> 

<Grid> 
    <Border Background="Black" Padding="20"> 
     <Button Content="ok"/> 
    </Border> 
</Grid> 
</Window> 

enter image description here

La frontière extérieure rouge ne pas montrer quand je le lance. Quelqu'un peut-il me dire si j'ai fait une erreur?

Répondre

0

Lors de l'exécution, le type de votre fenêtre est MainWindow, et non Window, d'où le style ne s'applique pas.

Vous pouvez changer TargetType est le style de mainWindow:

<Window xmlns:local="clr-namespace:YourNamespace" ...> 
    <Window.Resources> 
     <Style TargetType="local:MainWindow"> 
      ... 
     </Style> 
    </Window.Resources> 
    ... 
</Window> 

ou un ensemble Style propriété directement de la fenêtre:

<Window ...> 
    <Window.Style> 
     <Style TargetType="Window"> 
      ... 
     </Style> 
    </Window.Style> 
    ... 
</Window> 

ou régler que la propriété Template directement:

<Window ...> 
    <Window.Template> 
     <ControlTemplate TargetType="Window"> 
      <Border Padding="20" Background="red"> 
       <ContentPresenter Content="{TemplateBinding Content}" /> 
      </Border> 
     </ControlTemplate> 
    </Window.Template> 
    ... 
</Window> 
+0

Merci beaucoup. Maintenant, je comprends de votre exemple simple. –

0

Juste faire de petits changements ked bien pour moi

<Window.Resources> 
     <Style TargetType="local:MainWindow"> 
      <Setter Property="Template"> 
       ... 
     </Style> 
</Window.Resources> 
+0

Ne fonctionne pas uniquement avec local: mainwindow car j'ai besoin d'ajouter xmlns: local = "clr-namespace: YourNamespace" dans la section window. –

+0

Oui, vous devez ajouter cet espace de nom, dans mon cas, son xmlns: local = "clr-namespace: WpfApplication1". –