locked
Impossible de définir la valeur de l'attribut Name RRS feed

  • Question

  • Bonjour,

    J'essaye de créer un double panel qui s'ajuste automatiquement vis a vis de la largeur. C'est a dire, si le fenêtre fait 800px, alors il affiche les 2 panels sur une même ligne, si elle fait seulement 300px, il affiche les panels sur 2 lignes différentes. (je sais qu'il existe le wrapPanel pour faire cela. Ce double panel va être enrichie de beaucoup d'autres fonctionnalités par la suite.)

    J'ai réussi a le faire en créant le contrôle THPanel2. Celui-ci possède 2 DependencyProperty de type Panel appelé Panel 1 et Panel 2.
    Donc dans ma fenêtre, je suis capable de faire ça :

    <THwpf:THPanel2>
    	<THwpf:THPanel2.Panel1>
    		<StackPanel Margin="10">
    			<TextBlock Text="Mon panel 1" />
    			<Button Content="Button" MouseLeftButtonUp="Button_MouseLeftButtonUp" />
    		</StackPanel>
    	</THwpf:THPanel2.Panel1>
    	<THwpf:THPanel2.Panel2>
    		<StackPanel Margin="10">
    			<TextBlock Text="Mon panel 2" />
    		</StackPanel>
    	</THwpf:THPanel2.Panel2>
    </THwpf:THPanel2>

    Tout fonctionne, c'est absolument magnifique ! 
    Cependant, j'ai un problème maintenant. Quand j'essaye d'ajouter la propriété Name (ou x:Name, j'ai essayé les 2) sur le bouton, Visual Studio me renvoi l'erreur suivante :
    Erreur 1 Erreur de build inconnue, 'MC3093 : impossible de définir la valeur de l'attribut Name 'btn' sur l'élément 'Button'. 'Button' se trouve sous la portée de l'élément 'THPanel2', qui avait déjà un nom inscrit quand il a été défini dans une autre portée. Ligne 11 Position 29.'

    Si vous avez besoin de plus de détails, j'ai créer un nouveau projet spécifique pour ce problème téléchargeable ici : 

    http://sd-2.archive-host.com/membres/up/106010725933349121/Autre/ErrorNameSLN.zip

    (Comporte le fichier SLN (Visual Studio 2012) qui contient la classe THPanel2 et MainWindow.xaml)

    J'arrive pas a comprendre cette erreur. Sur internet, les seules réponses trouvées sont : "essaye de mettre x:Name au lieu de Name". Ca ne fonctionne pas. :(

    Merci pour votre aide.

    mercredi 11 juin 2014 09:34

Réponses

Toutes les réponses

  • Bonjour,

    Avez essayé de voir cette solution : http://blog.bluecog.co.nz/archives/2007/08/27/wpf-cannot-set-name-attribute/

    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

    • Proposé comme réponse Aurel Bera jeudi 12 juin 2014 06:26
    • Marqué comme réponse Aurel Bera vendredi 13 juin 2014 06:40
    mercredi 11 juin 2014 23:51
    Modérateur
  • Oui c'est exactement ça. Merci, c'est une solution envisageable.
    Le seul problème, c'est que l'on perd la force du wpf, a savoir séparer le design du "code".

    J'envisage une autre solution : Déclarer un grid dans les ressources de la page ou de la fenêtre.
    <Panel1 = "{Static Ressources ...}" />

    Dommage que le WPF ne soit pas assez puissant pour m'éviter les solutions de bricolage... 

     
    jeudi 12 juin 2014 15:26