Autor Beitrag
FrEEzE2046
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109

Windows 98, 2000, XP Pro, Vista Ultimate 32 & 64 Bit, Windows 7 Beta 64 Bit
C/C++, C# (VS 2008 TeamSystem) - Delphi (Delphi 5) - Java (Eclipse)
BeitragVerfasst: Do 04.03.10 18:01 
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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Fr 05.03.10 00:30 
user profile iconFrEEzE2046 hat folgendes geschrieben Zum zitierten Posting springen:
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 sein :) (auch wenn die Implementierung dort über den Timer etwas merkwürdig ist).

user profile iconFrEEzE2046 hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconFrEEzE2046 hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109

Windows 98, 2000, XP Pro, Vista Ultimate 32 & 64 Bit, Windows 7 Beta 64 Bit
C/C++, C# (VS 2008 TeamSystem) - Delphi (Delphi 5) - Java (Eclipse)
BeitragVerfasst: Fr 05.03.10 14:40 
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Ableiten ist unter WPF/SL immer die letzte Lösung, die erste sollte Behaviors sein :) (auch wenn die Implementierung dort über den Timer etwas merkwürdig ist).


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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Fr 05.03.10 20:36 
user profile iconFrEEzE2046 hat folgendes geschrieben Zum zitierten Posting springen:
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, blogs.msdn.com/dphil...blend-behaviors.aspx dürfte dir weiterhelfen.

Edit: Behaviors können allerdings nicht in Styles gesetzt werden, das stimmt (falls du das überhaupt meintest).

_________________
>λ=