2 votes

Comment obtenir la valeur de x:Name au moment de l'exécution

J'ai eu :

   <ListView.View GridViewColumnHeader.Click="ColumnHeaderClick">
      <GridView>
          <GridViewColumn x:Name="Col" Header="Item">   

   private void ColumnHeaderClick(object sender, RoutedEventArgs e)
     {
        GridViewColumnHeader headerClicked = e.OriginalSource as GridViewColumnHeader;

     }

Maintenant, comment obtenir la valeur x:Name de GridViewColumn dans la méthode ? Je ne peux pas mettre la propriété 'Name' pour la colonne dans le xaml, et il vient comme une chaîne vide dans le runtime. Bien que je sois capable d'obtenir l'en-tête, j'ai toujours besoin d'obtenir la valeur x:Name.

3voto

Abe Heidebrecht Points 16417

Lorsque vous utilisez le x:Name sur un élément qui n'est pas un FrameworkElement o FrameworkContentElement il enregistre l'élément avec un NameScope . Malheureusement, vous ne pouvez pas récupérer le nom d'un élément, la recherche ne fonctionne que dans l'autre sens.

Si vous avez besoin de transmettre des informations supplémentaires sur la DataGridColumn, une propriété attachée personnalisée serait un moyen facile de le faire.

Plus d'informations sur x:Name peut être trouvé sur MSDN . En outre, le La documentation de NameScope décrit son comportement .

0voto

gootdude Points 46

Vous pouvez tirer parti de la réflexion pour saisir la valeur avec :

GridViewColumnHeader headerClicked = e.OriginalSource as GridViewColumnHeader;
String xName = (String)headerClicked.getType().GetProperty("Name").GetValue(headerClicked, null);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X