我是 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
}
非常感谢您的帮助!