2012-02-23 17 views
10

में कमांड या प्रॉपर्टी में डिलीट एक्शन (डब्ल्यूपीएफ डाटाग्रिड में) को बाध्य करने के लिए कैसे करें मेरे पास एक डाटाग्रिड और एक व्यू मॉडल है जिसमें "व्यक्ति" वर्ग का एक अवलोकन संग्रह है जो डाटाग्रिड के लिए आइटमसोर्स के रूप में कार्य करता है।मॉडल

डेटा ग्रिड दो पाठ स्तंभ "प्रथम" और "अंतिम नाम"

datagrid "CanUserAddRows" और "CanUserDeleteRows" सही पर सेट किया है है। तो उपयोगकर्ता हटाएं बटन का उपयोग करके नई पंक्तियां जोड़ सकते हैं और उन्हें हटा सकते हैं।

जब उपयोगकर्ता एक पंक्ति को हटाने का प्रयास करता है, तो मैं सत्यापित करना चाहता हूं कि वह उसे हटा सकता है या नहीं। यदि वह इसे हटा सकता है तो इसे हटा दिया जाएगा अन्यथा त्रुटि दिखाई जाएगी और पंक्ति को हटाया नहीं जा सकता है। कुछ हम रिले आदेश

न्यू RelayCommand (parm => this.DeletePerson (parm), this.CanDeletePerson (parm)

यह संभव है में है की तरह? यदि ऐसा है तो कैसे?

  • गिरिजा

उत्तर

29

करने के लिए अपने डेटा ग्रिड स्थापित करने का प्रयास करें ...

CanUserDeleteRows = "false" चुने गए dItem = "{बाइंडिंग SelectedPerson, मोड = TwoWay}"

और जोड़ने ...

<DataGrid.InputBindings> 
    <KeyBinding Key="Delete" Command="{Binding DeletePersonCommand}" /> 
</DataGrid.InputBindings> 

अपने वी एम को SelectedPerson जोड़ें और DeletePersonCommand में SelectedPerson के आधार पर अपने हटाना सत्यापन प्रदर्शन (ICommand) प्रमाणीकरण पास होने पर निष्पादन योग्य चयन से आइटम निष्पादित करें या हटाएं और हटाएं।

+4

यह ध्यान देने योग्य है कि ग्रिड डिलीट कुंजी खाता है, भले ही CanUserDelete पंक्तियां गलत हों, इसलिए आप एक रैपिंग तत्व में कीबाइंडिंग नहीं डाल सकते हैं। – DanH

+0

रैपिंग तत्व? – jpierson

+0

वाह, यह वास्तव में एकदम सही समाधान है, जब मैंने अपने व्यूमोडेल में एक कस्टमाइज्ड कमांड की कुंजी को बाध्य करने के बाद, यह पूरी तरह से काम करता है और पीछे कोड से बचाता है। मैंने अन्य समाधान देखा है, लेकिन अब तक यह सबसे अच्छा है! – RainCast