2012-02-14 14 views
18

एक्सएएमएल का निम्नलिखित भाग मुझे (अर्थहीन) संदेश के साथ XamlParseException क्यों देता है "अभिव्यक्ति प्रकार मान्य शैली मान नहीं है।" चलने के समय पर?ControlTemplate में टेम्पलेट बाइंडिंग का उपयोग करना। ट्रिगर

<Control x:Class="TestApp.Max.MyControl" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:Max="clr-namespace:TestApp.Max" 
     mc:Ignorable="d" 
     d:DesignHeight="300" d:DesignWidth="300"> 
    <Control.Template> 
    <ControlTemplate> 
     <TextBlock Name="txt" Text="{TemplateBinding Max:MyControl.Foo}" /> 
     <ControlTemplate.Triggers> 
     <Trigger Property="Control.IsMouseOver" Value="True"> 
      <Setter TargetName="txt" Property="Text" Value="{TemplateBinding Max:MyControl.Bar}" /> 
     </Trigger> 
     </ControlTemplate.Triggers> 
    </ControlTemplate> 
    </Control.Template> 
</Control> 

हमलावर लाइन

<Setter TargetName="txt" Property="Text" Value="{TemplateBinding Max:MyControl.Bar}" /> 

है अगर मैं बाइंडिंग यह काम करने के लिए शुरू होता है एक सामान्य के साथ TemplateBinding बदल देते हैं:

{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Text2} 

नहीं करना चाहिए मैं के बाद से एक TemplateBinding का उपयोग कर सकेंगे मैं एक नियंत्रण टेम्पलेट के भीतर हूँ? और अपवाद संदेश का वास्तव में क्या अर्थ है?

+0

मैंने सोचा कि मैं चिपकूँगा कि मुझे एक ही समस्या है, नियमित रूप से बाध्यकारी उपयोग करने में सक्षम होने के बारे में भूल गया, आसपास के काम के लिए धन्यवाद। – Hugoagogo

उत्तर

0

स्टिग-अलोन शैलियों में परिभाषित होने पर ट्रिगर्स सबसे अच्छा काम करते हैं, जगह में सामग्री नहीं। स्टाइल संसाधन में अपने ट्रिगर को परिभाषित करने का प्रयास करें, फिर अपने टेम्पलेट से स्टाइल संसाधन का संदर्भ लें।

+0

क्षमा करें, मेरे प्रश्न का उत्तर नहीं देता है। मुझे पता है कि समस्या के आसपास कैसे काम करना है, लेकिन यह जानना चाहेंगे कि ऐसा क्यों होता है। – stmax

2

बाइंडिंग टेम्पलेटेड माता-पिता: इस पंक्ति में टेक्स्ट 2 का टेक्स्ट टेक्स्टब्लॉक की टेक्स्ट प्रॉपर्टी के लिए आवेदन करने जा रहा है, इसलिए यह ठीक चलता है।

टेम्पलेट बाइंडिंग में: इस पर नज़र डालें: मैक्स का हल मूल्य: MyControl.Bar टेम्पलेट बाध्यकारी के लिए संसाधन कुंजी के रूप में कार्य करने जा रहा है [यहां बार का मान वास्तविक मान नहीं है, इसके बजाय यह एक संपत्ति कुंजी नाम] जो मौजूद नहीं है और इसलिए यह त्रुटि फेंकता है "दिया गया कुंजी शब्दकोश में मौजूद नहीं था।"

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