2017-10-17 4 views
0

Ich habe ein Problem mit Telerik Kontrolle.WPF, Telerik: Ändern Sie den Steuerungsstil, wenn deaktiviert

<Style x:Key="RadDropDownButtonStyle" TargetType="telerik:RadDropDownButton"> 
<Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="telerik:RadDropDownButton"> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsEnabled" Value="False"> 
          <Setter Property="Foreground" Value="Red" />... 

So behandelt dies Deaktivierte Eigenschaft. Text ändert seine Farbe, aber es ist kein Kontrast, etwas wie Wasserzeichen.

Wie kann ich dies deaktivieren? Und machen deaktivierte Kontrolle mehr Kontrast?

Antwort

0

Text ändert seine Farbe, aber es ist kein Kontrast, etwas wie Wasserzeichen.

Für zukünftige Referenzen wird dies durch die Opacity Eigenschaft verursacht. Wenn die Deckkraft kleiner als 1 ist, wird sie heller.

Das Problem, das Sie beschreiben, ist etwas sehr vertrautes. Und ich fürchte, es gibt keine gute Möglichkeit, dies loszuwerden, so sehr, dass der beste Ratschlag, den ich Ihnen geben kann, nicht einmal die Mühe ist. Wenn überhaupt, wird es nur die Verwendung der Themen und Stile zu einem echten Schmerz machen.

Allerdings gibt es eine einfache Möglichkeit, Ihre gewünschte Verhalten zu erhalten, indem die IsEnabled="False" Eigenschaft mit IsHitTestVisible="False" ersetzen und Focusable="False"
Dies macht es unmöglich, zu klicken oder die Steuerung von Tastatur-Navigation zu konzentrieren, im Grunde ist es untauglich zu machen. Jetzt können Sie weitere Style-Eigenschaften hinzufügen, damit es so aussieht, wie Sie glauben, dass ein deaktiviertes Steuerelement aussehen sollte. Zum Beispiel durch die Einstellung Vordergrund und Hintergrund oder Sie könnten sogar eine Opazität näher an 1 (Beispiel: 0,9), die es weniger dunkel als das Original, aber immer noch dunkel genug, um richtig zu lesen.

Ich hoffe, das hilft Ihnen bei Ihrem aktuellen Problem, lassen Sie einfach einen Kommentar, wenn Sie mich weiter klären möchten.


EDIT 1: Apperently können die Opazität Änderung überschreiben, indem Sie Ihre eigenen DataTemplate für die Steuerung verwendet wird. How to have 100% opacity even when control is disabled in wpf C#


EDIT 2: Ich gebe Ihnen ein Beispiel dafür, wie richtig die anderen Eigenschaften zu verwenden.

So würden Sie normalerweise eine deaktivierte Schaltfläche definieren, wodurch der Text leichter und weniger lesbar wird.

<!-- Simple disabled button --> 
<telerik:RadButton Content="Test Button 1" IsEnabled="False" /> 

<!-- Button with binding on IsEnabled --> 
<telerik:RadButton Content="Test Button 2" IsEnabled="{Binding MyBinding}" /> 

Jetzt werde ich Ihnen zeigen, wie Sie diese Ergebnisse, indem Sie die Eigenschaften IsHitTestVisible und Focusable nachahmen können.

In den obigen Beispielen sehen die Schaltflächen so aus, als wären sie noch aktiviert. Sie können sie jedoch nicht fokussieren oder anklicken. Natürlich möchten wir einen Unterschied sehen, um sagen zu können, dass sie nicht verwendet werden können.

<!-- Styled disabled button --> 
<telerik:RadButton Content="Test Button 1" IsHitTestVisible="False" Focusable="False" > 
    <telerik:RadButton.Style> 
     <Style TargetType="telerik:RadButton"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=IsHitTestVisible}" Value="False"> 
        <Setter Property="Opacity" Value="0.8"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </telerik:RadButton.Style> 
</telerik:RadButton> 
+0

Vielen Dank für die Antwort. Der Wert der Opazitätseigenschaft konnte nicht geändert werden. Haben Sie irgendwelche Varianten? – Sosedid

+0

Das ist nicht was ich gesagt habe. Wenn die Steuerung deaktiviert wird, ändert sich die "Opazität" automatisch. Es ist ziemlich unmöglich, das zu verhindern. Haben Sie versucht, 'IsHitTestVisible' und' Focusable' zu ​​verwenden? – Oceans

+0

, was ich habe versucht: ' ' – Sosedid

Verwandte Themen