मैं प्रोग्रामेटिक रूप से सिल्वरलाइट 3.0 ऐप में डेटा टेम्पलेट में ईवेंट और तत्वों को प्रोग्राम करने की कोशिश कर रहा हूं। मेरे पास एक निर्भरता संपत्ति वाला उपयोगकर्ता नियंत्रण है जहां मैं सेट किया गया टेम्पलेट लेना चाहता हूं, इसे ट्वीक करना चाहता हूं, और फिर संशोधित संस्करण को आंतरिक नियंत्रण में सेट करना चाहता हूं।प्रोग्रामेटिक रूप से डेटा टेम्पलेट को कैसे संशोधित करें?
मेरे पास विचार है कि डेटा टेम्पलेट जो आता है, उसे एक्सएएमएल पढ़ें, इसे ट्वीक करें, और फिर संशोधित डेटा टेम्पलेट बनाने के लिए XamlReader का उपयोग करें जिसे बाद में आंतरिक नियंत्रण में सेट किया जा सकता है। इस दृष्टिकोण के साथ इस मुद्दे को मैं कैसे originalal टेम्पलेट से XAML पाने के लिए पता है नहीं उदाहरण के लिए (अगर यह भी संभव है।):
protected virtual void OnItemTemplateChanged(DependencyPropertyChangedEventArgs e)
{
// Get the original Xaml from the set template
//string originalXaml = ???
// Modify the template
string newXaml = originalXaml.Replace("foo", "bar"); // for example
// Create a new template from the modified XAML
DataTemplate newTemplate = (DataTemplate)XamlReader.Load(newXaml);
// Update the inner template
this._childDropdown.ItemTemplate = newTemplate;
}
कोई पता है या तो: 1) वहाँ का कोई तरीका है पढ़ने के लिए मूल XAML, या 2) डेटा टेम्पलेट को प्रोग्रामेटिक रूप से संशोधित करने के लिए एक और तरीका।
धन्यवाद,
मैं (कड़वाहट से) ने अपनी परियोजना को फिर से काम किया ताकि उसे डेटा टेम्पलेट में हेरफेर की आवश्यकता न हो। यह वही नहीं है जो मैं चाहता था लेकिन कम से कम मैं ऐसा करने का प्रयास करने में और अधिक समय बर्बाद नहीं कर रहा हूं। धन्यवाद, मुझे उम्मीद है कि सिल्वरलाइट का भविष्य संस्करण डेटा टेम्पलेट के कुछ प्रोग्रामेटिक हेरफेर की अनुमति देता है। –
मुझे लगता है कि मैं कस्टम जनरेटर के साथ आइटम्स कंट्रोल आइटमकंटनर जेनरेटर को प्रतिस्थापित करने की क्षमता के रूप में क्या देखना चाहता हूं, जिसे हम फिलहाल नहीं कर सकते हैं, मुझे एसएल 4 देखना होगा कि यह अनुमति देता है या नहीं। – AnthonyWJones