2010-05-03 16 views
9

Mam wiele TextBox kontroli i próbuję napisać styl czyści tekst własność gdy Sterowanie jest niepełnosprawnych. Nie chcę mieć obsługi zdarzeń w kodzie za.WPF TextBox spust do zwykłego tekstu

pisałem tak:

<Style TargetType="{x:Type TextBox}">        
<Style.Triggers> 
    <Trigger Property="IsEnabled" Value="False">          
    <Setter Property="Text" Value="{x:Null}" /> 
    </Trigger>         
</Style.Triggers> 
</Style> 

Problem polega na tym, że jeśli TextBox jest zdefiniowany następująco:

<TextBox Text={Binding Whatever} /> 

następnie wyzwalacz nie działa (prawdopodobnie dlatego, że jest związany) Jak przezwyciężyć problem?

Odpowiedz

14

Ponieważ jawnie ustawiasz tekst w polu tekstowym, wyzwalacz stylu nie może go zastąpić. Wypróbuj to:

<TextBox> 
    <TextBox.Style> 
     <Style TargetType="{x:Type TextBox}"> 
      <Setter Property="Text" Value="{Binding Whatever}" /> 

      <Style.Triggers> 
       <Trigger Property="IsEnabled" 
         Value="False"> 
        <Setter Property="Text" Value="{x:Null}" /> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    <TextBox.Style> 
</TextBox> 
+0

Chciałem tylko zapytać. Jeśli chciałbym dodać to do Zasobów Kontroli jako Styl (aby nie musiałem powtarzać w 100 razy), czy byłoby to możliwe z czymś takim jak TemplateBinding, czy też muszę napisać Kontrolę niestandardową dziedziczącą po TextBox i w domyślnym szablonie określasz ten styl za pomocą TemplateBinding? –

+0

Wystarczy zdefiniować styl w sekcji Zasoby okna i nadać mu klucz x:. Możesz następnie odwołać się do niego za pomocą StaticResource. Sprawdź "style WPF" w Google - wiele świetnych artykułów. –