के रूप में दायाँ क्लिक को संभालने में सक्षम नहीं है मेरे पास एक उपयोगकर्ता नियंत्रण में एक पूर्वावलोकन मैउसडाउन ईवेंट के साथ एक डेटाग्रिड स्थापित है। विचार यह है कि जब कोई उपयोगकर्ता अपने माउस को सेल में ले जाता है, तो यह सेल की सामग्री के आधार पर चलाने के लिए एक क्रिया सेट करता है, और जब माउस क्लिक करता है तो कार्रवाई चलती है, चाहे माउस बटन के बावजूद।
मेरे ईवेंट हैंडलर (सी #):WPF डेटाग्रिड पूर्वावलोकनमाउसडाउन
private void LadderMouseClick(object sender, System.Windows.Input.MouseButtonEventArgs e) {
if (m_ActiveAction != null) {
m_ActiveAction();
}
e.Handled = true;
}
मेरे डेटा ग्रिड (XAML):
<DataGrid AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserSortColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding Source={StaticResource sourceCollection}}" Name="DataGrid" RowDetailsVisibilityMode="Collapsed" IsReadOnly="True" Height="600" MouseLeave="DataGrid_MouseLeave" MouseEnter="DataGrid_MouseEnter" PreviewMouseDown="LadderMouseClick" PreviewMouseDoubleClick="LadderMouseDoubleClick" VerticalScrollBarVisibility="Hidden" SelectionUnit="Cell" SelectionMode="Single">
यह काम करता है, और ठीक से डेटा ग्रिड से अधिक है जब एक उपयोगकर्ता या तो दाएं या बाएं क्लिक के कार्रवाई चलाता है। हालांकि, समस्या यह है कि जब उपयोगकर्ता सही क्लिक करता है, तो सेल का माउस बन जाता है (सेल के चारों ओर एक काला सीमा दिखाई देती है); ऐसा तब नहीं होता जब वे क्लिक छोड़ दें।
वे अलग-अलग व्यवहार क्यों कर रहे हैं? क्या उन्हें उसी तरह से संभाला नहीं जाना चाहिए? क्या मुझे कुछ सचमुच सरल है?
अग्रिम धन्यवाद!
संपादित करें:
मैं अब तक DataGrid.UnselectAll की कोशिश की है(), DataGrid.UnselectAllCells(), DataGrid.SelectedIndex = -1, और DataGrid.CurrentCell = डिफ़ॉल्ट (DataGridCellInfo)। उनमें से कोई भी मेरे लिए काम नहीं किया है।
EDIT # 2:
यदि यह मदद करता है, तो मैं डेटा डेटा प्रदर्शित करने के लिए टेक्स्टब्लॉक के साथ DataGridTemplateColumns का उपयोग कर रहा हूं। क्या यह इस व्यवहार का कारण बन सकता है?
समाधान:
यह Peter Hansen के सुझाव डेटा ग्रिड के साथ ही PreviewMouseDown घटना के लिए एक PreviewMouseRightButtonDown घटना जोड़ने के लिए था जिसके द्वारा हल किया गया था।
उत्तर देने के लिए धन्यवाद, दुर्भाग्य से यह इसे ठीक नहीं लग रहा था। यह आपको यह जानने में रूचि दे सकता है कि, मेरे डेटाग्रिड को एकल चयन मोड पर सेट करने के बावजूद, यदि कोई आइटम जोड़ा या निकाला जाता है तो क्लिक करने पर एकाधिक सेल्स को हाइलाइट किया जा सकता है। अन्य चयनित कोशिकाओं में काले रंग की बजाय नीली सीमा दिखाई देती है। –
मैंने अपना उत्तर अपडेट किया है - उम्मीद है कि यह आपको अब मदद करता है .. –
ओह वाह जो दिलचस्प है, पूर्वावलोकनमौस राइटबटनअप को इसे ठीक कर दिया गया है। मैंने शपथ ली थी कि मैंने पहले यह कोशिश की थी, लेकिन मैंने वास्तव में पूर्वावलोकनमाउस राइटबटनडाउन की कोशिश की जो पहले काम नहीं कर सका। आपकी सहायताके लिए धन्यवाद! –