2010-02-11 19 views
6

मैं विंडोज़ एप्लिकेशन विकास के लिए डब्ल्यूपीएफ में नया हूं, बस इसे पहले वहां रखना चाहता था। मैं विजुअल स्टूडियो 2010 और .NET Framework 4.0 का उपयोग कर रहा हूं।डब्ल्यूपीएफ और डेटा बाइंडिंग के साथ सरल सीआरयूडी काम

मैं एक साधारण प्रशासन उपकरण पर काम कर रहा हूं। सादगी के लिए कहें कि मैं कर्मचारी डेटा के साथ काम कर रहा हूं। मैंने UserDetail नामक एक छोटा UserControl बनाया है जिसमें कर्मचारी वर्ग से संबंधित सभी फ़ील्ड हैं।

मेरे उपयोगकर्ताDetail पर इनपुट नियंत्रण को बाध्य करने का सबसे आसान तरीका क्या है? एक नया उदाहरण बनाते समय, या मौजूदा मान को संपादित करते समय मौजूदा मानों के दौरान इसमें एक खाली स्क्रीन हो सकती है।

मैं निर्माता में निम्नलिखित की कोशिश की:

DataContext = _employee; 

और मैं XAML में इस तरह एक नियंत्रण के लिए बाध्य:

<TextBox Name="txtFirstName" Text="{Binding FirstName}"/> 

यह काम करता है, लेकिन यह सही तरीका की तरह प्रतीत नहीं होता इसे करने के लिए। यह एक साधारण उदाहरण की तरह लगता है, लेकिन मुझे अभी तक कुछ भी उपयोगी नहीं मिला है।

इस तरह के सरल बाध्यकारी के लिए किसी ट्यूटोरियल के लिए कोई सुझाव या लिंक?

+0

आपको शायद यह पता चलेगा कि एक बार जब आप एमवीवीएम के जादू को समझ चुके हैं, तो आपको अपने कर्मचारी डेटा के लिए UserControl की आवश्यकता नहीं है, केवल एक टेम्पलेट। –

उत्तर

4

जोएल की तरह कहते हैं कि आप सही रास्ते पर हैं। किसी बिंदु पर आपको कोड कोड में डेटाकॉन्टेक्स्ट को स्पष्ट रूप से सेट करने की आवश्यकता है। यह आम तौर पर शीर्ष स्तर पर किया जाएगा - जैसे कि आपकी विंडो क्लास में - और सभी डेटाकॉन्टेक्स्ट को डेटाबिंडिंग के माध्यम से सेट किया जाना चाहिए।

आपके विशिष्ट उदाहरण के लिए आप कहते हैं कि आप UserControl पर काम कर रहे हैं। आप सीधे उपयोगकर्ता नियंत्रण नियंत्रण के DataContext को बाध्य करने में सक्षम होना चाहिए जहां नियंत्रण का उपयोग किया जा रहा है, और इसलिए आपको UserControl के लिए कोड में डेटाकॉन्टेक्स्ट सेट करने की आवश्यकता नहीं है। कम से कम सामान्य रूप से आपके UserControl का उपयोगकर्ता वह है जो UserControl को बताएगा कि कौन से डेटा का उपयोग करना है।

मान लें कि आपके पास एक संपत्ति AllEmployees है जो एक संपत्ति चयनित कर्मचारी है। आपने इस ऑब्जेक्ट का एक उदाहरण अपने विंडो पर डेटाकॉन्टेक्स्ट के रूप में सेट किया है - पीछे कोड में। अब आप चाहते हैं कि आपकी विंडो चयनित कर्मचारी के लिए उपयोगकर्ता विवरण दिखाए। UserDetails नियंत्रण संभालने है निर्मित यह एक कर्मचारी ऑब्जेक्ट अपने DataContext करने के लिए बाध्य है, और अब आप यकीन है कि यह एक DataBinding में इस की स्थापना करके एक हो:

<Window xmlns:local="YourNamespaceHoldingTheUserDetailsControl> 
    .. 
    <local:UserDetails DataContext={Binding SelectedEmployee} /> 
    .. 
</Window> 

आप भी अपनी UserDetails वर्ग के लिए एक कर्मचारी संपत्ति जोड़कर देख सकते हैं डेटाकॉन्टेक्स्ट सेट करेगा - अगर आपको लगता है कि यह बाध्यकारी में बेहतर दिखता है।

जीयूआई और अपने डोमेन मॉडल आप निश्चित रूप से the MVVM pattern के बारे में सीखना चाहिए के बीच अलगाव में सुधार करना। मैंने शुरुआत में जेसन डॉलिंगर द्वारा कुछ बार this video देखने से सीखा। वीडियो आपको डब्ल्यूपीएफ के बारे में बहुत उपयोगी चीजें सिखाएगा। This question में इस विषय पर कुछ मूल्यवान लिंक भी दिखते हैं।

डब्ल्यूपीएफ सीखने शुभकामनाएँ! यह अन्य जीयूआई ढांचे से थोड़ा अलग है, इसलिए सीखने की अवस्था थोड़ा खड़ी हो सकती है। लेकिन एक बार जब आप इसमें शामिल हो जाते हैं तो यह एक अद्भुत जगह है!

2

आप वास्तव में सही रास्ते पर हैं।

मैं सुझाव है कि आप पढ़ा this article on M-V-VM

+0

ग्रेट आलेख, धन्यवाद! – 80bower

संबंधित मुद्दे