2012-08-13 15 views
6

के साथ काम करना मेरे पास कुछ डेटा के साथ एक स्क्रीन है। स्क्रीन के अंदर मेरे पास दो कस्टम नियंत्रण (बाएं और दाएं तरफ) हैं।लाइट्सविच, सिल्वरलाइट और कस्टम नियंत्रण

बाइंड कुछ पहले कस्टम नियंत्रण में कुछ नियंत्रण करने के लिए एक डेटाबेस से डेटा:

मैं क्या करने की जरूरत निम्नलिखित है। (एक सूची, combobox आदि भरें, समस्या इतनी ज्यादा नहीं)

उपयोगकर्ता फिर सूची में एक प्रविष्टि का चयन कर सकते हैं, एक बटन दबाएं -> दूसरा कस्टमकंट्रोल अब दृश्यमान होना चाहिए; चयन के आधार पर डीबी से कुछ डेटा का अनुरोध करें और गतिशील रूप से चार्ट बनाएं और दिखाएं।

तो मुझे पता है कि चार्ट कैसे बनाएं और नियंत्रण बनाएं। लेकिन मैं कोड के माध्यम से स्क्रीन से डेटा तक कैसे पहुंच सकता हूं और पहले कस्टमकंट्रोल के भीतर से किसी अन्य कस्टमकंट्रोल तक पहुंच सकता हूं?

संपादित करें:

बातें मुझे पता चला। स्क्रीन से

  1. अभिगम नियंत्रण

    this.FindControl("yourControl");

  2. नियंत्रण के साथ कुछ करो:

    this.FindControl("yourControl").ControlAvailable += ((o,e) => { YourControlType myControl = e.Control as YourControlType; });

  3. संपत्ति स्क्रीन डेटा

    IContentItem dataContext = this.DataContext as IContentItem; 
        IScreenObject screen = dataContext.Screen; 
    
        IScreenProperty prop = screen.Details.Properties["yourProperty"]; 
    
        VisualCollection<yourProperty> items = prop.Value as VisualCollection<yourProperty>; 
    
  4. दिखाएँ नए स्क्रीन

    Application.Current.Details.Dispatcher.BeginInvoke(() => Application.Current.ShowGraphScreen(reportItem.BlockID));

हो सकता है कि यह किसी को मदद मिलेगी।

+0

+1 केवल स्क्रीन डेटा तक पहुंचने के तरीके पर छोटे रत्नों के लिए +1। चूंकि कस्टम नियंत्रण अब अलग-अलग लाइब्रेरी में होना चाहिए, क्लाइंट ऐप के जेनरेट किए गए 'Application.common' के संदर्भ को जोड़ना, आपके उदाहरणों के साथ संयुक्त, एक बड़ी मदद थी। –

+0

क्या यह लिंक मदद करता है? [कस्टम कंट्रोल बाइंडिंग] (http://social.msdn.microsoft.com/Forums/en/lsextensibility/thread/394d7968-5210-441a-bf29-3da7001af07d) –

उत्तर

0

डीबी में संग्रह पर पैरामीटर के साथ एक फ़िल्टर क्वेरी बनाएं जिसे आप डेटा चाहते हैं। इस क्वेरी को स्क्रीन पर जोड़ें और पैरामीटर बाइंडिंग को FirstCustomControl पर सेट करें।

क्वेरी को पेड़ पर खींचें, इसे चार्ट में बदलें, और यैन के लिंक के अनुसार बाध्यकारी जांचें।

partial void ScreenName_InitializeDataWorkspace(List<IDataService> saveChangesTo) 
{ 
    this.FindControl("SecondCustomControl").IsVisible = False; 
} 

partial void ButtonName_Execute() 
{ 
    this.FindControl("SecondCustomControl").IsVisible = True; 
} 
SecondCustomControl के बाद से

(मैं इस चार्ट है संभालने हूँ) क्वेरी के लिए बाध्य है और क्वेरी के पैरामीटर बाध्य है:

फिर आप को दिखाने के लिए/निम्न के समान कोड की आवश्यकता होगी नियंत्रण छिपाने FirstCustomControl में चयनित मान पर, डेटा एकत्रण पृष्ठभूमि में किया जाता है।

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