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

1

我的研究结果表明,在 Silverlight 中这是不可能的 -.-

于 2013-07-02T09:28:54.400 回答