2011-06-03 7 views
6

मैं x का उपयोग करना चाहता हूं: नेबल्ड, सैटेलाइट उपयोगकर्ता नियंत्रण में कैलिबर के माध्यम से संपत्ति बाइंडिंग को हल करने के लिए नाम बाइंडिंग। माइक्रो के सम्मेलन।बाहरी उपयोगकर्ता नियंत्रण को हल करना x: कैलिबर में नाम कन्वेंशन बाइंडिंग। माइक्रो

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

<UserControl x:Class="Company.CompanyView" ...> 
    <StackPanel> 
     <customControls:CompanyNameControl /> 
     <customControls:CompanyAddressControl /> 
     .... 
    </StackPanel> 
</UserControl> 

इस दृश्य के लिए ViewModel को उजागर करता है गुण है कि घटकों द्वारा करने के लिए बाध्य किया जाएगा कि इन उपयोगकर्ता नियंत्रणों को बनाओ।

class CompanyViewModel : ... 
{ 
    public string CompanyName { get; set; } 
    public string CompanyAddressNo { get; set; } 
    public string CompanyAddressStreet { get; set; } 
    ... 
} 

उपयोगकर्ता नियंत्रण आम तौर पर सरल होते हैं, लेकिन इन्हें कई अलग-अलग विचारों में अत्यधिक उपयोग किया जाता है। यहाँ एक क्या दिखाई दे सकता है की एक उदाहरण है:

<UserControl x:Class="CustomControls.CompanyNameControl ...> 
    <StackPanel Orientation="Horizontal">    
     <TextBlock Text="Company Name: " /> 
     <TextBox x:Name="CompanyName" /> <!--This is how I'd like to bind--> 
     <TextBox Text="{Binding CompanyName}" /> <!--This is how I currently bind--> 
    </StackPanel> 
</UserControl> 

मेरे समझ है कि Caliburn.Micro में, एक्स: अगर वहाँ दृश्य के लिए एक ViewModel है नाम सम्मेलन शैली बंधन ही काम करता है। इस मामले में, UserControl स्वयं, एक दृश्य नहीं है। इसका उपयोग दृश्य में किया गया है।

क्या व्यू के लिए व्यूमोडेल को बाध्यकारी हल करने का कोई तरीका है जिस पर नेस्टेड, उपग्रह उपयोगकर्ता नियंत्रण बनाया गया है?

उत्तर

8

आपको कैल का उपयोग करने की आवश्यकता है: Bind.Model = "{बाइंडिंग}" जहां आप नियंत्रण का उपयोग करते हैं; कैलबर्न के लिए कैल एक xmlns है। माइक्रो।

<UserControl x:Class="Company.CompanyView" ...> 
    <StackPanel> 
     <customControls:CompanyNameControl cal:Bind.Model="{Binding}"/> 
     <customControls:CompanyAddressControl cal:Bind.Model="{Binding}"/> 
     .... 
    </StackPanel> 
</UserControl> 
+0

आह, मुझे पता था कि यह कुछ मूर्खतापूर्ण था ... धन्यवाद! – Adrian