Entwickler-Ecke

WPF / Silverlight - Button Content im Event abrufen?


cemolade - Mi 14.12.11 19:22
Titel: Button Content im Event abrufen?
Hallo also ich erstelle dynamisch ein paar Buttons als Array und weise allen beim Erstellen das selbe Event zu.
Kann ich im Event den jeweiligen Button Content abfragen? Oder muss ich für jeden Button ein eigenes Event machen?

In der Funktion:

C#-Quelltext
1:
btn[day].Click += new RoutedEventHandler(OnbtnClick);                    


Im Event:

C#-Quelltext
1:
2:
3:
4:
5:
        private void OnbtnClick(object sender, RoutedEventArgs e)
        {
            gsn.setDate(year, month, day);
            NavigationService.Navigate(new Uri("/Tagesansicht.xaml", UriKind.Relative));
        }


danke :)


Th69 - Mi 14.12.11 19:50

Der 'sender' entspricht ja dem aufgerufenen Control, d.h. deinem Button. Also einfach 'casten':

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
private void OnbtnClick(object sender, RoutedEventArgs e)
{
  Button button = sender as Button;
  if (button != null)
  {
    string text = button.Content.ToString();
  }
}

Hast du denn nicht vorher WinForms programmiert, denn dort ist es ja auch so?

Ich bin zwar nicht der Profi in WPF, aber üblicherweise werden Button-Clicks dort per Command ausgeführt.

P.S. Das Beispiel für .NET 3.0 (bzw. 3.5) ist wirklich übel: http://msdn.microsoft.com/en-us/library/system.windows.controls.contentcontrol.content%28v=VS.85%29.aspx
Wenigstens haben sie es für .NET 4 geändert: http://msdn.microsoft.com/en-us/library/system.windows.controls.contentcontrol.content%28v=VS.100%29.aspx


cemolade - Mi 14.12.11 20:00

Hallo, danke für die Antwort es klappt natürlich :)

WinForm hab ich ein paar Monate versucht mir selber beizubringen vor 4 Jahren aber da war ich noch etwas zu jung um das alles zu verstehen.
In der Schule lernen wir das alles nicht so genau, obwohl wir 3-7 Wochenstunden Programmieren haben. Diese sender scheinen sehr hilfreich zu sein :D
Muss ich mir auch ansehen, hab den Parameter nie beachtet :P

Danke nochmal