none
Problème de rendu dans le designer RRS feed

  • Question

  • Bonjour,

    J'ai un petit soucis d'affichage dans le designer de WPF. Mon projet est sous VS 2013 express.

    Tout d'abord, je me suis fait un style global (dans le app.xaml) pour définir des propriétés communes de fenêtre :

     <Style TargetType="Window" x:Key="WindowCommonStyle">
    			<Setter Property="Background" Value="{x:Null}" />
    			<Setter Property="WindowStyle" Value="None" />
    			<Setter Property="AllowsTransparency" Value="True" />
    			<Setter Property="Template">
    				<Setter.Value>
    					<ControlTemplate TargetType="Window">
                                                 <!--Pas besoin de montrer mon contenu du Template, ce n'est pas le pb...-->
    					</ControlTemplate>
    				</Setter.Value>
    			</Setter>
    </Style>

    Lorsque j'utilise ce style dans ma fenêtre principale, pas de problème tout est bien rendu.

    Maintenant, pour une fenêtre de type "Popup" je me suis dit que j'allais réutiliser le même style mais mettre en plus la propriété "ShowInTaskbar" à false pour les popup.
    J'ai fait donc ce style basé sur le premier :

    <Style x:Key="PopupWindowStyle" TargetType="Window"
    				BasedOn="{StaticResource WindowCommonStyle}">
    			<Setter Property="ShowInTaskbar" Value="False" />
    </Style>

    Lorsque je l'ai appliqué dans le designer sur ma nouvelle fenêtre qui allait servir de popup, eh bien, je n'avais plus l'effet de rendu au moment du design, mais par contre le rendu est bien appliqué à l'exécution.
    Plus précisément, sur cette fenêtre de popup, les propriétés héritées du premier style ne sont pas détectées comme étant ambiantes (Background, WindowStyle, AllowsTransparency, Template) lors du design.

    D'où la question suivante : faut-il faire quelque chose en plus pour forcer le designer à afficher correctement les propriétés ambiantes concernées?


    Philippe

    mercredi 11 juin 2014 13:21

Toutes les réponses

  • Bonjour,

    Pouvez-vous nous soumettre un petit projet exemple qui reproduit le problème ?

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance - P.O.S Informatique
    Blog : http://gilles.tourreau.fr - Suivez-moi sur Twitter
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCSA : SQL Server 2012
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0 / TFS 2010 / Windows Azure

    mercredi 11 juin 2014 23:52
    Modérateur
  • Bonjour,

    Tout d'abord, merci de votre réponse.

    Je vais mettre un autre exemple plus simple à reproduire, il suffit de créer une petite application WPF toute bête faite ainsi :

    Dans le App.xaml :

    <Application x:Class="TestApp.App"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 StartupUri="MainWindow.xaml">
        <Application.Resources>
    		<Style TargetType="Window" x:Key="MainWndStyle">
    			<Setter Property="WindowStyle" Value="None" />
    			<Setter Property="AllowsTransparency" Value="True" />
    			<Setter Property="Background" Value="Aqua" />
    		</Style>
    		<Style TargetType="Window" x:Key="SecondaryWndStyle" BasedOn="{StaticResource MainWndStyle}">
    			<Setter Property="ShowInTaskbar" Value="False" />
    		</Style>
        </Application.Resources>
    </Application>

    et dans la fenêtre principale :

    <Window x:Class="TestApp.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    		Style="{StaticResource SecondaryWndStyle}"
            Title="MainWindow" Height="350" Width="525">
    </Window>

    Résultat : dans le designer de MainWindow, on voit que seule la propriété 'ShowInTaskBar" est ambiante alors que les propriétés "WindowStyle", "AllowTransparency" et "Background" auraient dû l'être aussi. Pourtant, à l'exécution, tout sera bien pris en compte.

    La question que je me pose : y-a-t-il une astuce pour les afficher quand même dans le designer?


    Philippe

    jeudi 12 juin 2014 05:22
  • Alors, personne ne sait? C'est peut-être un bug connu de VS mais je n'en trouve aucune référence nulle part... Peut-être que j'ai mal cherché...

    Philippe

    mercredi 18 juin 2014 13:41