2009-02-20 11 views
6

Questo metodo clic pulsante lancia una finestra chiamata "(AssemblyName) .Reports" quando un pulsante con Content "Report" si fa clic:Come aggiungere ulteriori attributi agli elementi 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(); 
} 

ma voglio che il valore di attributo Contenuto del pulsante per essere in grado di cambiare , per esempio potrebbe cambiare in "Stock Reports" ma voglio comunque fare clic sul pulsante per avviare "(assemblyname) .Reports".

C'è un modo per aggiungere attributi al tag button, ad es. "TheWindowFileName"?

<Button x:Name="btnReports" Content="Stock Reports" TheWindowFileName="Reports"/> 

In caso contrario, in quale altro modo posso aggiungere ulteriori informazioni ai miei elementi dei pulsanti che posso leggere e di processo in codice dietro?

risposta

10

Certamente è possibile utilizzare attached properties per aggiungere attributi extra agli elementi XAML, ma per quello che vi serve si potrebbe forse basta usare il Tag proprietà esistente:

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

molto interessante, funziona alla grande per quello che mi serviva, è possibile aggiungere più di uno di questi? questa pagina MSDN non è chiara su questo: http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.tag.aspx –

+0

No, Tag è una proprietà come Width o Content - it può essere utilizzato solo una volta. Per aggiungere il tuo, segui il link delle proprietà allegate. –

1

Utilizzando un rapporto di proprietà qui può essere un eccessivo ma invece si può provare a incapsulare il comportamento del pulsante in un Command e passare i dati che si desidera utilizzare nel comando come CommandParameter. Questo dovrebbe fare il trucco.

Problemi correlati