2014-10-22 2 views
2

Я хочу установить непрозрачность набора изображений в моем главном окне до 0,25, когда свойство зависимостей в самом окне является ложным и восстанавливает их, когда свойство dependency истинно. Я попытался использовать триггер стиля для этого, но столкнулся с трудностями, когда свойство зависимостей было иным, чем свойство непрозрачности.Использование свойства триггера для свойства setter в стиле WPF

<Window.Resources> 
     <Style x:Key="IconEnabledStyle" TargetType="Image"> 
      <Style.Triggers> 
       <!-- MenuOptionsEnabled is on main window. Opacity is on Image --> 
       <Trigger Property="MenuOptionsEnabled" Value="False"> 
        <Setter Property="Opacity" Value="0.25"></Setter> 
       </Trigger> 
       <Trigger Property="MenuOptionsEnabled" Value="True"> 
        <Setter Property="Opacity" Value="1.0"></Setter> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Window.Resources> 

Как вы можете видеть, свойство Trigger имеет другой тип свойства Setter. Есть ли способ определить тип для свойства Trigger и Setter.

ответ

3

Чтобы решить эту проблему, вы можете использовать DataTrigger с RelativeSource найти предка Window, что-то вроде этого:

<Style x:Key="IconEnabledStyle" TargetType="Image"> 
    <Style.Triggers>  
     <DataTrigger Binding="{Binding MenuOptionsEnabled, 
        RelativeSource={RelativeSource AncestorType=Window}}" 
        Value="False"> 
      <Setter Property="Opacity" Value="0.25"></Setter> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

Обратите внимание, что по умолчанию Opacity уже 1. Поэтому вам не нужен триггер, чтобы сбросить его до 1. Когда условие выполнено, оно установлено в 0.25, иначе оно будет автоматически сброшено до значения, указанного ранее.

+1

Отлично, спасибо. – AncientSyntax

Смежные вопросы