मैं चयनित जवाब से विधि सहित चयन बदल घटना, रद्द करने के लिए प्रयास करने के लिए विभिन्न तरीकों का इस्तेमाल किया, लेकिन उनमें से कोई भी काम नहीं किया। लेकिन यह मेरे लिए महान काम किया:
datagrid के लिए PreviewMouseDown घटना हैंडलर का उपयोग करना:
private void dataGrid_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
//get the item I am clicking on (replace MyDataClass with datatype in datagrid)
var myItem = (e.OriginalSource as FrameworkElement).DataContext as MyDataClass;
//check if item is different from currently selected item
if (myItem != dataGrid.SelectedItem)
{
//save message dialog
MessageBoxResult result = MessageBox.Show("Changes will be lost. Are you sure?", "Confirmation", MessageBoxButton.YesNo, MessageBoxImage.Question);
//if click no, then cancel the event
if (result == MessageBoxResult.No)
{
e.Handled = true;
}
else
{
//otherwise, reinvoke the click event
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);
}
}
}
}
यह सफलतापूर्वक चयनित उपयोगकर्ता क्लिक करता है तो वर्तमान पंक्ति रहता है "नहीं", और वे क्लिक करते हैं " हां ", फिर निष्पादन सामान्य के रूप में जारी रहेगा। उम्मीद है कि यह भविष्य में किसी की मदद करता है, क्योंकि ऐसा लगता है कि ऐसा लगता है कि यह एक साधारण समस्या के लिए काम करेगा।
स्रोत
2017-10-25 17:11:03
क्या आप वाकई यह काम करेंगे? मुझे लगता है कि चयन बदला जाएगा लेकिन चयनित एंटर्री नहीं – Demarsch