2011-06-06 15 views
6

मेरे पास डेटाग्रिड के साथ यह छोटा सा मुद्दा है।WPF डेटाग्रिड - जैसे ही मूल्य बदल जाता है, चेकबॉक्स कॉलम में परिवर्तन करें

मेरे ग्रिड में मेरे पास एक चेकबॉक्स कॉलम है जो एकमात्र संपादन योग्य कॉलम है।

जिस व्यवहार को मैं ढूंढ रहा हूं वह डाटाग्रिड के लिए चेकबॉक्स परिवर्तन की स्थिति के रूप में डेटा के स्रोत को अपडेट करने के लिए है। तो उपयोगकर्ता बॉक्स को चेक/अनचेक करता है> अंतर्निहित डेटाटेबल अपडेट हो जाता है।

डिफ़ॉल्ट व्यवहार स्रोत को अद्यतन करने लगता है जब पंक्ति फोकस हो जाती है जब उपयोगकर्ता कुंजी दबाए रखने या परिवर्तनों को सहेजने के लिए किसी अन्य नियंत्रण पर क्लिक करता है।
मैं इस व्यवहार को कैसे बदल सकता हूं?

मुझे डेटाग्रिड के लिए कोई भी संपत्ति दिखाई नहीं दे रही है जो ऐसा कर सकती है और डेटाग्रिड चेकबॉक्स कॉलम के लिए चेक चेंजेड ईवेंट नहीं है।

उत्तर

4

डेटा ग्रिड में ही सभी स्तंभों के लिए UpdateSourceTrigger सेट (टेम्पलेट कॉलम को छोड़ कर) LostFocus होने के लिए और इस ओवरराइड नहीं किया जा सकता है। इसलिए चेकबॉक्स टेम्पलेट के साथ टेम्पलेट कॉलम का उपयोग करने की आवश्यकता है।

संपादित करें: यह डेटाग्रिड कॉलम के आस-पास मूर्खतापूर्ण गॉथ की लंबी सूची में से एक है। अधिक here रेखांकित हैं।

+0

और यहां और अधिक हैं [डेटाग्रिड के गॉथस] (https://blogs.msdn.microsoft.com/vinsibal/2009/04/14/5-more-random-gotchas-with-the-wpf-datagrid/)। –

11

आपको कॉलम के बाध्यकारी पर UpdateSourceTrigger संपत्ति की आवश्यकता है। यहाँ एक त्वरित उदाहरण है, तो आप यह शरीर से बाहर कर सकते हैं और रिक्त स्थान को भरने:

<DataGrid x:Name="someGrid"> 
    <DataGrid.Columns> 
     <DataGridCheckBoxColumn Binding="{Binding SomeProperty, UpdateSourceTrigger=PropertyChanged}" /> 
    </DataGrid.Columns> 
</DataGrid> 
+0

मैंने पहले से ही UpdateSourceTrigger = PropertyChanged सेट किया है जहां मैं पीछे कोड में ग्रिड को डेटाटेबल को बांधता हूं। क्या वह पर्याप्त नहीं होना चाहिए? –

+0

मैंने इस तरह के कॉलम के लिए बाध्यकारी सेट करने का प्रयास किया [बाध्यकारी = "{बाइंडिंग पथ = isfinished, UpdateSourceTrigger = PropertyChanged}"] (isfinished मेरे डेटाटेबल में एक कॉलम है) लेकिन यह वही व्यवहार है। –

+2

हाँ, मैंने कुछ परीक्षण किया था। ऐसा लगता है कि समस्या डेटाग्रिड में ही निहित है, बाध्यकारी नहीं। जब तक सेल फोकस नहीं हो जाता है तब तक यह संपादन मोड को 'अंत' नहीं करता है। –