3

私は Silverlight の初心者でMouseRightButtonDown(object sender, MouseButtonEventArgs e)、アプリケーションの別のイベント ハンドラーからアクティブ化する必要があります。

私は、WPFで次のようなことができることを発見しました:

public void OnContextMenuOpened(object sender, RoutedEventArgs e) {            
    MouseButtonEventArgs args = new  MouseButtonEventArgs(
        InputManager.Current.PrimaryMouseDevice, 
        0,
        MouseButton.Right);
     MouseRightButtonDown(sender, args);
}

しかし、Silverlight には InputManager-Class も MouseButton-Class もありません。

マウスの右ボタンを使用して(カスタムコントロール内の)DataGridRowを選択しようとしているので、やりたいです。コンテキストメニューがなくても簡単に可能ですが、コンテキストメニューをオンにすると、コンテキストメニューが開き、イベントが発生しません...

私のコードスニペット:

public override void OnApplyTemplate() {
    DataGrid = (DataGrid)GetTemplateChild("DataGrid");
    DataGrid.MouseRightButtonDown += DataGridMouseRightButtonDown;

    ContextMenu = (ContextMenu)GetTemplateChild("ContextMenu");
    ContextMenu.Opened += OnContextMenuOpened;
}

private void DataGridMouseRightButtonDown(object sender, MouseButtonEventArgs e) {
    //My code to select an DataGridRow
}

public void OnContextMenuOpened(object sender, RoutedEventArgs e) {  
    //This event-handler now will be always activated if I do 
    //right-mouse-button-click
}

助けてくれてどうもありがとう!

4

1 に答える 1