, , , . , , :
PreviewMouseDown datagrid:
private void dataGrid_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
var myItem = (e.OriginalSource as FrameworkElement).DataContext as MyDataClass;
if (myItem != dataGrid.SelectedItem)
{
MessageBoxResult result = MessageBox.Show("Changes will be lost. Are you sure?", "Confirmation", MessageBoxButton.YesNo, MessageBoxImage.Question);
if (result == MessageBoxResult.No)
{
e.Handled = true;
}
else
{
dataGrid.Dispatcher.BeginInvoke(
new Action(() =>
{
RoutedEventArgs args = new MouseButtonEventArgs(e.MouseDevice, 0, e.ChangedButton);
args.RoutedEvent = UIElement.MouseDownEvent;
(e.OriginalSource as UIElement).RaiseEvent(args);
}),
System.Windows.Threading.DispatcherPriority.Input);
}
}
}
}
, "", "", . , - , , -, .