Silverlight kann nun auch rechts click

In meiner aktuellen Silverlight Schulung wurde heute das Thema Mouse Events besprochen. Seit Silverlight 4 gibt es ja bekannterweise auch Events zur rechten Maustaste.  Also sollte theoretisch auch eine Textbox per Rechstclick ein Context Menü anzeigen können. Die Idee des Schulungs Teilnehmers sah ungefähr so aus.

<TextBox Height="111"  MouseRightButtonUp="textBox1_MouseRightButtonUp"  Name="textBox1" Width="180" />

Allerdings funktioniert das nicht, weil die Textbox das Event als behandelt markiert und damit nicht mehr weiter reicht. Um ein Context Menü zu erstellen gibt es aber seit Silverligth 4 im seperat erhältlichen Toolkit eine passende Lösung. Mit dem ContectMenuService wird ala Tooltip die Textbox um zusätzliche Funktion erweitert.

image

Das Context Menü funktioniert genauso wie in WPF. Es besteht aus Menuitems. Pro Menüpunkt ein Item. Dieses wiederum aus einem Header, der üblicherweise den Menütext darstellt. Optisch aufgepeppt wird über ein Unterelement MenuItem.Icon per Image Element. Das Attribut Icon im MenuItem Element kann dafür nicht genutzt werden. Für den Trennstrich gibt es das Seperator Element.

<TextBox Height="30"  HorizontalAlignment="Left" Margin="161,36,0,0" 
Name="textBox1" VerticalAlignment="Top" Width="180" > <toolkit:ContextMenuService.ContextMenu> <toolkit:ContextMenu> <toolkit:MenuItem Header="Hyperlink" Click="MenuItem1_Click"> <toolkit:MenuItem.Icon> <Image Source="Images/link.png"></Image> </toolkit:MenuItem.Icon> </toolkit:MenuItem> <toolkit:Separator /> <toolkit:MenuItem Header="drucken" Click="MenuItem2_Click"> <toolkit:MenuItem.Icon> <Image Source="Images/print.png"></Image> </toolkit:MenuItem.Icon> </toolkit:MenuItem> <toolkit:MenuItem Header="speichern" Click="MenuItem3_Click" IsEnabled="True"> <toolkit:MenuItem.Icon> <Image Source="Images/save.png"></Image> </toolkit:MenuItem.Icon> </toolkit:MenuItem> </toolkit:ContextMenu> </toolkit:ContextMenuService.ContextMenu> </TextBox>


In diesem Beispiel werden einzelne Events pro Menüpunkt deklariert. Denkbar ist auch per Commands zu arbeiten. Dann wird das Attribut Command bzw CommandParameter verwendet.

Kommentar schreiben