2016-06-03 4 views
2

Ich möchte, dass der Hintergrund zu Grau wechselt, wenn das Fenster nicht das aktuelle aktive Fenster ist. Ich habe versucht, diese:Wie man inaktives Fenster style?

<mm:MetroWindow.Style> 
    <Style TargetType="{x:Type mm:MetroWindow}"> 
     <Style.Triggers> 
      <Trigger Property="IsFocused" Value="False"> 
       <Setter Property="Background" Value="Gray" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</mm:MetroWindow.Style> 

Aber es nicht funktioniert, ist der Hintergrund immer Gray, auch wenn das Fenster im Fokus ist. Habe ich die falsche Eigenschaft benutzt oder was mache ich falsch?

+0

Haben Sie versucht, Hintergrund Einstellung ohne Trigger? Nur um zu überprüfen, ob es funktioniert. – XAMlMAX

+0

ja, einen Hintergrund ohne einen Trigger zu setzen funktioniert gut – 0xDEADBEEF

+0

Haben Sie versucht mit 'EventTrigger' und' EnterActions' und dann ein 'Storyboard' mit Dauer auf 0 gesetzt. Und das Ereignis ist' GotFocus' – XAMlMAX

Antwort

2

Verwenden IsActive Eigenschaft:

XAML:

<Style x:Key="MetroWindowStyle2" TargetType="{x:Type Controls:MetroWindow}"> 
     <Style.Triggers> 
      <Trigger Property="IsActive" Value="False"> 
       <Setter Property="Background" Value="Gray" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 

enter image description here

0

Sie müssen hinzufügen:

 <Trigger Property="IsFocused" Value="True"> 
      <Setter Property="Background" Value="Red" /> 
     </Trigger> 

(oder was auch immer Farbe wollen Sie den Hintergrund sein).

Möglicherweise müssen auch hinzufügen:

<Setter Property="Focusable" Value="true"/> 

zu Ihrem Stil.

Source

+0

Ich versuchte dies, aber es funktioniert nicht. Focusable ist auf true eingestellt und ich habe versucht, eine Standardfarbe zu setzen, indem ich sowohl die Methode als auch einen Setter verwende (im Stil direkt, nicht in einem Trigger). In beiden Fällen verhält sich der Trigger wie IsFocused nie wahr. Es gibt auch keinen verbindlichen Fehler in der Debug-Ausgabe. – 0xDEADBEEF

0

Sie müssen auch den aktiven Hintergrund in der Style einzustellen. Es gibt mehrere Möglichkeiten, wie ein Hintergrund festgelegt werden kann, und die Style wird in der Hierarchie nicht hoch. Siehe https://msdn.microsoft.com/en-us/library/ms743230%28v=vs.100%29.aspx

<mm:MetroWindow.Style> 
    <Style TargetType="{x:Type mm:MetroWindow}"> 
     <Setter Property="Background" Value="someColour" /> 
     <Style.Triggers> 
      <Trigger Property="IsFocused" Value="False"> 
       <Setter Property="Background" Value="Gray" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</mm:MetroWindow.Style>