私は 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
}
助けてくれてどうもありがとう!