WPF - zdefiniowanie zdarzenia w CustomControl

0

W pliku code-behind na DataGrid mam obsługę zdarzenia PreviewKeyDown:

 
private void carDataGrid_PreviewKeyDown(object sender, KeyEventArgs e)
{...}

W jaki sposób zdefiniować to zdarzenie w nowej kontrolce DataGrid?

 
class CustomDataGrid : DataGrid
{...}
1

Najprościej jak zrobisz sobie taką kontrolkę i skompilujesz projekt to w toolbox powinna się pojawić twoja kontrola i możesz ją używać jak standardowego datagrida. Podobnie jak tutaj WPF i importowanie kontrolki z Window do MainWindow ale jak widać nie wszystkim to działa, nie wiadomo czemu. ;)

Alternatywnie w konstruktorze na przykład okna możesz dodać zdarzenie:

customDataGrid1.PreviewKeyDown += CustomKeyDown;

i później standardowo:

private void CustomKeyDown(object sender, KeyEventArgs e)
{
         // ...
}

No i można jeszcze tak. :P

CustomDataGrid1.PreviewKeyDown += (o, args) => { /* ... */};
// albo tak. ;)
CustomDataGrid1.PreviewKeyDown += delegate(object o, KeyEventArgs args) { /* ... */};
0

Dzięki za odpowiedź, to wiem już jak to zrobić, ale chciałbym jednak, aby to było w tej nowej klasie, tak aby wszędzie DataGrid działał jednakowo i nie trzeba było duplikować kodu. Nie wiem jeszcze, w którym miejscu to zrobić, w konstrukorze nie działa.

0

Nie winkami czemu akurat tak to chcesz rozwiązać, ale nie widzę powodu dla którego dodanie do konstruktora zdarzenia miało by nie działać.

class CustomDataGrid : DataGrid
   {
      public CustomDataGrid()
      {
         this.PreviewKeyDown += (sender, args) => { /* ... */ };
      }
   }

No chyba że robisz coś magicznego w tym zdarzeniu, więc pokaż jakiś konkretny kod żeby można było coś poradzić.

0

Działa, mój błąd. Dzięki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1