Entwickler-Ecke
WPF / Silverlight - Eigene Klasse in XAML-Code deklarieren | Basis-Klassen-Event
FrEEzE2046 - Do 04.03.10 18:01
Titel: Eigene Klasse in XAML-Code deklarieren | Basis-Klassen-Event
Hallo,
da es in Silverlight offensichtlich kein MouseDoubleClick Event gibt, wollte ich ein solches erstellen. Dazu habe ich mir zunächst ein Beispielprojekt angelegt und folgende Klasse implementiert:
C#-Quelltext
1: 2: 3: 4: 5:
| public class ButtonEx : Button { public event MouseButtonEventHandler MouseClickEx; public event MouseButtonEventHandler MouseDoubleClickEx; } |
Zwei Probleme tun sich mir nun aber auf:
1.) Wie kann ich aus meinem XAML-Code heraus auf diese neue Klasse zugreifen? Muss ich dafür einen xmlns:local - Namespace angeben?
2.) Wie kann ich das OnMouseLeftButtonDown Ereignis abfangen? Ich befinde mich ja selbst in der entsprechenden Klasse, leider ist die OnMouseLeftButtonDown - Methode aber nicht als virtual deklariert ...
Hoffe ihr könnt mir weiterhelfen.
Kha - Fr 05.03.10 00:30
FrEEzE2046 hat folgendes geschrieben : |
Dazu habe ich mir zunächst ein Beispielprojekt angelegt und folgende Klasse implementiert: |
Ableiten ist unter WPF/SL immer die letzte Lösung, die erste sollte
Behaviors [
http://compiledexperience.com/blog/posts/Silverlight-3-Behaviors-Double-Click-Trigger] sein :) (auch wenn die Implementierung dort über den Timer etwas merkwürdig ist).
FrEEzE2046 hat folgendes geschrieben : |
1.) Wie kann ich aus meinem XAML-Code heraus auf diese neue Klasse zugreifen? Muss ich dafür einen xmlns:local - Namespace angeben? |
Er muss nicht local heißen, aber ansonsten ja ;) . VS sollte dir dann direkt einen Verweis auf deine Assembly als Vervollständigung anbieten.
FrEEzE2046 hat folgendes geschrieben : |
Ich befinde mich ja selbst in der entsprechenden Klasse, leider ist die OnMouseLeftButtonDown - Methode aber nicht als virtual deklariert ... |
Äh, doch? Ansonsten könntest du immer noch im Konstruktor ganz normal einen Eventhandler anhängen.
FrEEzE2046 - Fr 05.03.10 14:40
Ich verstehe den Code auf der verlinkten Seite nicht 100%. Ich möchte erreichen, dass ich bei meinen UserControls auch DoubleClick Events abfangen kann.
Wie spielen da jetzt (z.B.) eine TextBox und dieser Trigger zusammen? Wo und wie deklariere ich die Eventmethode?
Tur mir leid, wenn ich mich da etwas weltfremd anstelle, aber ich programmiere eigentlich in C und Assembler.
edit:
Was noch dazu kommt, ist das bei mir die Klasse TriggerBase keine Template-Klasse ist, so wie im Beispiel ...
edit2:
Okay, da hat die Assembly zu System.Windows.Interactivity gefehlt. Als ich den Trigger jetzt jedoch einem Button spendieren wollte, habe ich mich gefragt wie ich das nun überhaupt deklariere und bin dabei auf die Aussage gestoßen, dass Trigger seit Silverlight 2 gar nicht mehr Bestandteil von Silverlight sind. Kann mich jemand aufklären?
Kha - Fr 05.03.10 20:36
FrEEzE2046 hat folgendes geschrieben : |
Als ich den Trigger jetzt jedoch einem Button spendieren wollte, habe ich mich gefragt wie ich das nun überhaupt deklariere und bin dabei auf die Aussage gestoßen, dass Trigger seit Silverlight 2 gar nicht mehr Bestandteil von Silverlight sind. |
Jupp, WPF-Triggers gibt es nicht, als Ersatz dienen die Blend Behaviors ;) ...
Das Ganze beruht auf Attached Properties,
http://blogs.msdn.com/dphill/archive/2009/09/25/blend-behaviors.aspx dürfte dir weiterhelfen.
Edit: Behaviors können allerdings nicht in Styles gesetzt werden, das stimmt (falls du das überhaupt meintest).
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!