Question

Généralement, les contrôles WPF sont déclarés dans les fichiers .xaml et non dans le code (fichiers .xaml.cs). Cependant, parfois, j'ai besoin d'utiliser certains de ces contrôles dans le code postérieur pour pouvoir les manipuler. Comment puis-je obtenir l’analyse d’un tel contrôle s’il "réside"? dans le fichier xaml?

Était-ce utile?

La solution

Vous pouvez utiliser la méthode FindName () de la classe ControlTemplate.

// Finding the grid that is generated by the ControlTemplate of the Button
Grid gridInTemplate = (Grid)myButton1.Template.FindName("grid", myButton1);

Autres conseils

Je ne suis pas sûr de ce que vous demandez, je vais donc essayer de répondre aux deux cas que j'interprète comme votre question.

1) Si vous souhaitez déclarer un contrôle explicite, puis le modifier directement, il vous suffit de définir la propriété name de la manière suivante:

<Canvas x:Name="myCanvas"/>

Vous pouvez ensuite accéder au canevas par le nom en tant que tel:

myCanvas.Background = Brushes.Blue;

2) Si vous souhaitez déclarer un contrôle générique, puis l'utiliser plusieurs fois, procédez comme suit:

<Window>
   <Window.Resources>
      <Ellipse x:Key="myEllipse" Height="10" Width="10">
   </Window.Resources>
</Window>

Vous pouvez ensuite accéder à ce contrôle prédéfini en utilisant cette syntaxe dans le code:

Ellipse tempEllipse = (Ellipse)FindResource("MyEllipse");

Si vous souhaitez utiliser Resourse comme modèle pour plusieurs contrôles, ajoutez x: Shared = "false".

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top