2011-06-02 12 views
5

मेरे आवेदन में, मेरे पास एक टेक्स्टबॉक्स है जिसे मैं अपने डेटाकॉन्टेक्स्ट में एक enum के आधार पर सक्षम/अक्षम करना चाहता हूं। Enum में तीन मान हैं (कोई भी, मुझे, कोई भी) और जब मैं "Someone" मान सेट करता हूं तो मैं टेक्स्टबॉक्स को सक्षम करना चाहता हूं। मैं मूल्य को रिवर्स में सेट करके समाधान को हैक करने में सक्षम हूं (नीचे देखें)। हालांकि, क्या कोई यह बता सकता है कि पहला समाधान क्यों काम नहीं करता?मैं TextBox.IsEnabled = True सेट करने के लिए DataTrigger का उपयोग क्यों नहीं कर सकता?

यह काम नहीं करता ...

<TextBox Text="{Binding ModifiedUser, UpdateSourceTrigger=PropertyChanged}" 
     IsEnabled="False"> 
    <TextBox.Style> 
     <Style TargetType="{x:Type TextBox}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ModifiedBy}" 
          Value="Someone"> 
        <Setter Property="IsEnabled" 
          Value="True" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </TextBox.Style> 
</TextBox> 

अजीब, इस कोड काम करता है।

<TextBox Text="{Binding ModifiedUser, UpdateSourceTrigger=PropertyChanged}"> 
    <TextBox.Style> 
     <Style TargetType="{x:Type TextBox}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ModifiedBy}" 
          Value="Anyone"> 
        <Setter Property="IsEnabled" 
          Value="False" /> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding ModifiedBy}" 
          Value="Me"> 
        <Setter Property="IsEnabled" 
          Value="False" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </TextBox.Style> 
</TextBox> 

उत्तर

14

आपको अपनी शैली में शुरुआती isEnabled भी सेट करना होगा। अन्यथा आपका "स्थानीय" IsEnabled = झूठा हमेशा जीत जाएगा!

अपनी शैली बदलें और यह काम करेगा।

<TextBox Text="{Binding ModifiedUser, UpdateSourceTrigger=PropertyChanged}"> 
<TextBox.Style> 
    <Style TargetType="{x:Type TextBox}"> 
     <Setter Property="IsEnabled" Value="False" /> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding ModifiedBy}" 
         Value="Someone"> 
       <Setter Property="IsEnabled" 
         Value="True" /> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</TextBox.Style> 

+0

धन्यवाद! मुझे पता था कि मुझे कुछ याद आ रहा था – Nescio

+1

आज मेरे लिए सबक :-) – dba

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