2016-06-03 3 views
2

Я хочу, чтобы фон менялся на серый, если Окно не является текущим активным окном. Я попытался это:Как создать неактивное окно?

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

Но это не работает, Фон всегда серый цвет, даже если окно находится в фокусе. Я использовал неправильную собственность или что я делаю неправильно?

+0

Вы пробовали настройки фона без триггера? Просто проверьте, работает ли это. – XAMlMAX

+0

Да, установка фона без триггера отлично работает – 0xDEADBEEF

+0

Вы пытались использовать 'EventTrigger' и' EnterActions', а затем использовать 'Storyboard' с Duration, установленным в 0. И это событие' GotFocus' – XAMlMAX

ответ

2

Используйте IsActive свойство:

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

Вам нужно добавить:

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

(или любой цвет, который вы хотите, чтобы фон быть).

Вы также мог бы добавить:

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

к вашему стилю.

Source

+0

Я пробовал это, но это не работает. Focusable установлен в true, и я попытался установить цвет по умолчанию, используя ваш метод, а также используя сеттер (в стиле напрямую, а не в триггере). В обоих случаях триггер ведет себя так, как IsFocused никогда не будет истинным. В отладочном выходе также нет ошибки привязки. – 0xDEADBEEF

0

Вы должны установить активный фон в Style, а также. Есть несколько способов, которыми можно установить фон, и Style не достигает высоких значений в иерархии. См 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>