8 Stimmen

Rechtsklick in Silverlight deaktivieren

Wir verwenden Silverlight in einem Kiosk-Szenario. Gibt es eine Möglichkeit, die Rechtsklick-Funktion zum Aufrufen des Silverlight-Konfigurationsdialogs zu deaktivieren?

8voto

Eric Ness Punkte 381

//Im SharePoint habe ich einen kleinen Code hinzugefügt, der SP anweist, das Skript nach jedem Laden eines Teils auszuführen. Funktioniert wie ein Zauber :)

// EDIT

oder besser noch das Silverlight-Forum empfiehlt Ihnen dies zu tun: Silberlicht-Forum

<div id="silverlightObjDiv">
    <!-- silverlight object here -->
</div>

<script>
_spBodyOnLoadFunctionNames.push ('setupElement');

function setupElement ()

{

document.getElementById('silverlightObjDiv').oncontextmenu =      disableRightClick;

}

function disableRightClick(e) {
if (!e) e = window.event;
if (e.preventDefault) {
    e.preventDefault();
} else {
    e.returnValue = false;
}
}
</script>

4voto

Chris S Punkte 63542

Wie Dain erwähnte, ist dies in Silverlight 4 problemlos möglich:

Machen Sie die Kontrolle fensterlos:

<param name="windowless" value="true" />

Fangen Sie den Rechtsklick in Ihrem Root-Gitter/Layout-Steuerelement ab:

public MainPage()
{
    LayoutRoot.MouseRightButtonDown += (s, e) => { e.Handled = true; };
}

Der Haken
In Firefox und Chrome haben Sie die Wahl zwischen einem Kontextmenü または mit der Möglichkeit, mit dem Mausrad zu blättern. Leider kann man nicht beides haben, hoffentlich wird sich das in Silverlight 5 ändern.

2voto

dain Punkte 6349

In Silverlight 4 können Sie dies in C# tun, ohne sich mit HTML herumschlagen zu müssen und von diesem abhängig zu sein.

Das folgende Beispiel zeigt, wie man den Rechtsklick so implementiert, dass er tatsächlich von einem Steuerelement verwendet wird, aber man kann auch einfach eine Klickfalle erstellen, wenn man ihn nur deaktivieren möchte.

 public partial class MainPage : UserControl
 {
      public MainPage()
      {
          InitializeComponent();

          // wire up the event handlers for the event on a particular UIElement
          ChangingRectangle.MouseRightButtonDown += new MouseButtonEventHandler(RectangleContextDown);
          ChangingRectangle.MouseRightButtonUp += new MouseButtonEventHandler(RectangleContextUp);
      }

     void RectangleContextUp(object sender, MouseButtonEventArgs e)
     {
         // create custom context menu control and show it.
         ColorChangeContextMenu contextMenu = new ColorChangeContextMenu(ChangingRectangle);
         contextMenu.Show(e.GetPosition(LayoutRoot));
     }

     void RectangleContextDown(object sender, MouseButtonEventArgs e)
     {
         // handle the event so the default context menu is hidden
         e.Handled = true;
     }
 }

Referenz: http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#rightclick

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X