2010-05-24 13 views
5

में नहीं मिली थी, मुझे हमारी बड़ी परियोजना को SL4 में अपग्रेड करने का प्रयास करते समय एक त्रुटि मिली है। मैंने मूल विषय नहीं लिखा और मेरी थीम जानकार महान नहीं है।लागू विषय त्रुटि: संपत्ति 'सामग्री' प्रकार 'System.Windows.Controls.Control'

<Style TargetType="themeControls:LabelHeader"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate> 
       <DataInput:Label 
        FontSize="{TemplateBinding FontSize}" 
        FontFamily="{TemplateBinding FontFamily}" 
        Foreground="{TemplateBinding Foreground}" 
        Content="{TemplateBinding Content}"/> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="FontFamily" Value="Tahoma"/> 
    <Setter Property="FontSize" Value="20"/> 
    <Setter Property="Foreground" Value="Red"/> 
</Style> 

:
मैं इस तरह LabelHeader स्टाइल हूँ; मेरी डेमो एप्लिकेशन में मैं एक लेबल और एक LabelHeader (मैं बनाया है और सिर्फ एक व्युत्पन्न) DefaultStyleKey = typeof (LabelHeader साथ लेबल से वर्ग है जो है यह SL3 में काम करता है लेकिन SL4 में मुझे मिलता है:

त्रुटि: 2500
श्रेणी:: ParserError
संदेश: संपत्ति 'सामग्री' प्रकार में नहीं मिला था 'System.Windows.Controls सिल्वरलाइट आवेदन संहिता में बिना क्रिया त्रुटि नियंत्रण।
फ़ाइल:
पंक्ति: 9
स्थिति: 168

अगर मैं इसे बदल: सामग्री = "{TemplateBinding सामग्री}" सामग्री = "XXX" तो फिर वहाँ कोई त्रुटि है, लेकिन निश्चित रूप से, , मुझे पृष्ठ

पर सेट किए गए सामग्री के बजाय मुझे अपने लेबल में XXX मिल गया है, कोई विचार है कि मैं यह कैसे काम कर सकता हूं?

डेमो यहाँ परियोजना:

http://walkersretreat.co.nz/files/ThemeIssue.zip

(क्षमा याचना पुनः पोस्टिंग के लिए, मैं अब तक कोई जवाब यहाँ पर मिल गया है: http://forums.silverlight.net/forums/p/183380/415930.aspx#415930)

संपादित करें जवाब है जैसे कि यह काम करेगा प्रदान की दिखता है। इस मुद्दे के लिए यहां एक मुद्दा खोला गया है: https://connect.microsoft.com/VisualStudio/feedback/details/561183

वोट अगर आपको लगता है कि यह महत्वपूर्ण है!

उत्तर

6

www.silverlight.net मंच पर वुल्फ श्मिट (एमएसएफटी) की पोस्टिंग के लिए धन्यवाद, इस मुद्दे की पहचान, समझाया गया और संभावित रूप से डिजाइन किए गए हल किए गए हैं। उनके अनुसार, सिल्वरलाइट 4 अब कंट्रोल टेम्पलेट्स के संबंध में सिल्वरलाइट 3 के अर्ध-गतिशील व्यवहार को एक कठोर तरीके से मानता है, जिसके परिणामस्वरूप सिल्वरलाइट 4 में त्रुटि होती है जब संपत्ति ControlTemplate के लक्ष्य प्रकार के लिए मौजूद नहीं होती है। ध्यान रखना महत्वपूर्ण है कि जब लक्ष्यटाइप को ControlTemplate पर निर्दिष्ट नहीं किया गया है तो यह लक्ष्य प्रकार = "नियंत्रण" पर डिफ़ॉल्ट होता है।

समस्या का समाधान ControlTemplate के लिए एक लक्ष्य टाइप निर्दिष्ट करना है जैसे कि टेम्पलेट बाध्यकारी में उपयोग की जाने वाली गुण हल हो जाएंगी।

यहाँ TargetType ControlTemplate के लिए निर्दिष्ट इस पुस्तक का नूतन शैली है:

<Style x:Key="LabelHeader" TargetType="controls:Label"> 
    <Setter Property="Margin" Value="0" /> 
    <Setter Property="Opacity" Value=".6" /> 
    <Setter Property="VerticalAlignment" Value="Stretch" /> 
    <Setter Property="VerticalContentAlignment" Value="Center" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="controls:Label"> 
       <Border BorderBrush="#CCCCCCCC" BorderThickness=".5" Background="#CCEFEFEF"> 
        <ContentPresenter VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="2" Content="{TemplateBinding Content}"/> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

हालांकि यह डेवलपर्स के लिए बहुत उपयोगी है, तो आईडीई/IntelliSense सत्यापित कर सकता है कि संपत्ति TemplateBinding में निर्दिष्ट वास्तव में डिफॉल्ट पर मौजूद है किया जाएगा/ControlTemplate के निर्दिष्ट लक्ष्य टाइप।

से Sourced: - सिल्वरलाइट नेट पर हमारे फ़ोरम चर्चाएं: (पर्याप्त नहीं प्रतिष्ठा पोस्ट करने के लिए> 1 हाइपरलिंक) - मेरी एमएस कनेक्ट मुद्दा: https://connect.microsoft.com/VisualStudio/feedback/details/561183

+0

Silvelight.Net चर्चा Jaans यहां बात कर रहा है: http://forums.silverlight.net/forums/p/183380/415930.aspx – Mark

4

सिल्वरलाइट 4 में कुछ स्थितियों में यह बग है जब यह अपवाद उत्पन्न होता है। यह सामग्री संपत्ति के लिए विशिष्ट है।

अस्थायी फ़िक्स सामग्री प्रॉपर्टी के लिए सामान्य बाध्यकारी का उपयोग करना प्रतीत होता है।

Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content}" 

हालांकि मैंने अभी तक इस समाधान का परीक्षण नहीं किया है।

+0

धन्यवाद, मैं इसे एक – Mark

+0

लगता है की कोशिश दे देंगे इस तरह काम करता है, धन्यवाद! इस मुद्दे के लिए यहां एक मुद्दा खोला गया है: https://connect.microsoft.com/VisualStudio/feedback/details/561183 वोट अगर आपको लगता है कि यह महत्वपूर्ण है – Mark

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