2011-06-02 17 views
5

Uygulamamda, datacontext'teki bir numaraya göre etkinleştirmek/devre dışı bırakmak istediğim bir TextBox var. Enum'un üç değeri vardır (Herkes, Ben, Birisi) ve "Birisi" değeri ayarlandığında Metin Kutusunu etkinleştirmek istiyorum. Değeri tersine ayarlayarak bir çözümü kesebiliyorum (aşağıya bakın). Ancak, birisi ilk çözümün neden işe yaramadığını açıklayabilir mi?Neden TextBox.IsEnabled = True değerini ayarlamak için DataTrigger kullanamıyorum?

<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> 

Bu işe yaramazsa ... Garip bir şekilde, bu kod çalışır.

<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> 

cevap

14

siz de tarzında ilk IsEnabled belirlemek zorunda. aksi halde "yerel" IsEnabled = false her zaman kazanır!

Tarzınızı değiştirin ve işe yarayacaktır.

<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

teşekkürler! – Nescio

+1

Bugün benim için bir şey özlediğimi biliyordum :-) – dba

İlgili konular