Av Lars Rosén
7. May 2009, 14:27
Visa profil för Lars Rosén
Vill du kunna ta hand om högerklick i Silverlight?
Visst är det bra att man kan se att det är en Silverlight-app genom att högerklicka, men ibland kanske man vill kunna styra över vad som händer om man högerklickar.
Hur gör man då?
Hemligheten ligger i att koppla på sig på event från Htmlsidan genom att anropa HtmlPage.Document.AttachEvent()
Om man har en metod som ser ut så här:
private void OnContextMenu(object sender, HtmlEventArgs e)
Så går det att köra följande kodsnutt:
HtmlPage.Document.AttachEvent("oncontextmenu", OnContextMenu);
Det som behöver göras i OnContextMenu är att förhindra den ordinare hanteringen av det här eventet (visa inställningsmenyn för silverlight) och det görs genom att anropa PreventDefault(); på den HtmlEventArgs-variabel som man fick in i eventet.
Något som är viktigt att påpeka är att aspx-sidan där silverlight-appen ska visas måste vara windowless, alltså där det finns en tag som börjar med <asp:Silverlight så måste det finnas en parameter som säger så här: Windowless="true"
Jag har i exemplet skapat upp en liten meny som dyker upp via en Storyboard och som innehåller tre trevliga länkar.
För att höger-klicket ska visa upp menyn måste rätt event kopplas på, tryck på knappen "Attach Event".
Sedan byter knappen text mot "Detach Event" och om man vill få tillbaka ordinarie hantering av Höger-klick i silverlight så tryck på knappen då det står "Detach Event".
Tanka ner exemplet nedan och njut... 
/Lars
RightClick.zip (558,50 kb)