WPF - zdefiniowanie zdarzenia w CustomControl

WPF - zdefiniowanie zdarzenia w CustomControl
XF
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 9 lat
  • Postów:39
0

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

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

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

Kopiuj
 
class CustomDataGrid : DataGrid
{...}
DibbyDum
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Polska, Kraków
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:

Kopiuj
customDataGrid1.PreviewKeyDown += CustomKeyDown;

i później standardowo:

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

No i można jeszcze tak. :P

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

Yubby dibby dibby dibby dibby dibby dibby dum..
edytowany 2x, ostatnio: DibbyDum
XF
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 9 lat
  • Postów:39
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.

edytowany 3x, ostatnio: xfeng
DibbyDum
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Polska, Kraków
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ć.

Kopiuj
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ć.


Yubby dibby dibby dibby dibby dibby dibby dum..
XF
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 9 lat
  • Postów:39
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.