2009-02-20 9 views
6

Ce bouton du clic ouvre une fenêtre appelée « (AssemblyName) .Reports » quand un bouton avec le contenu « Rapports » est cliqué:Comment ajouter des attributs supplémentaires aux éléments XAML standard?

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    Button button = (Button)e.OriginalSource; 
    Type type = this.GetType(); 
    Assembly assembly = type.Assembly; 
    Window window = (Window)assembly.CreateInstance(String.Format("{0}.{1}", type.Namespace, button.Content)); 
    window.ShowDialog(); 
} 

Mais je veux la valeur d'attribut de contenu du bouton pour pouvoir changer , par exemple il pourrait changer en "Stock Reports" mais je veux quand même cliquer sur le bouton pour lancer "(assemblyname) .Reports".

Existe-t-il un moyen d'ajouter des attributs à la balise de bouton, par ex. "TheWindowFileName"? Sinon, comment puis-je ajouter des informations supplémentaires à mes éléments de bouton que je peux lire et traiter dans le code derrière?

Répondre

10

Certes, vous pouvez utiliser attached properties pour ajouter des attributs supplémentaires aux éléments XAML, mais pour ce que vous avez besoin, vous pouvez probablement utiliser l'existant Tag propriété:

<Button x:Name="btnReports" Content="Stock Reports" Tag="Reports"/> 
+0

très intéressant, fonctionne très bien pour ce dont j'avais besoin, est-il possible d'en ajouter plus d'un? cette page MSDN n'est pas si claire: http://msdn.microsoft.com/fr-fr/library/system.windows.frameworkelement.tag.aspx –

+0

Non, Tag est une propriété comme Width ou Content - it ne peut être utilisé qu'une fois. Pour ajouter le vôtre, suivez le lien des propriétés ci-joint. –

1

En utilisant la propriété ci-joint peut être un surpuissant mais vous peut essayer d'encapsuler le comportement de votre bouton dans un Command et transmettre les données que vous souhaitez utiliser dans la commande en tant que CommandParameter. Cela devrait faire l'affaire.

Questions connexes