E 'un comportamento che farà il trucco per voi (ispirato da questo blog post):
public class SelectRowOnRightClickBehavior : Behavior<DataGrid>
{
protected override void OnAttached()
{
base.OnAttached();
AssociatedObject.MouseRightButtonDown += HandleRightButtonClick;
}
protected override void OnDetaching()
{
base.OnDetaching();
AssociatedObject.MouseRightButtonDown += HandleRightButtonClick;
}
private void HandleRightButtonClick(object sender, MouseButtonEventArgs e)
{
var elementsUnderMouse = VisualTreeHelper.FindElementsInHostCoordinates(e.GetPosition(null), AssociatedObject);
var row = elementsUnderMouse
.OfType<DataGridRow>()
.FirstOrDefault();
if (row != null)
AssociatedObject.SelectedItem = row.DataContext;
}
}
Utilizzare in questo modo:
<sdk:DataGrid x:Name="DataGrid" Grid.Row="4"
IsReadOnly="True"
ItemsSource="{Binding MyItems}">
<i:Interaction.Behaviors>
<b:SelectRowOnRightClickBehavior/>
</i:Interaction.Behaviors>
</sdk:DataGrid>
fonte
2012-04-05 16:35:22
E' un peccato che abbiamo dovuto usare hack così, ma suppongo sia meglio di niente. Grazie –
L'evento MouseRightButtonDown è disponibile solo da SL 4.0. C'è qualche altra soluzione per il clic destro in SL 3.0? – vijaysylvester