2016-10-07 2 views
1

Привет, я просто задавался вопросом, могу ли я получить какую-то помощь, у меня возникли проблемы с получением триггера данных, если я удалю триггер данных и поместил тень, как работает сеттер. Но я хочу дать пользователю возможность включить и выключить тень, поэтому я думал, что триггер данных будет ответом.WPF Data Trigger

В принципе, я хочу добавить триггер данных по всем моим стилям управления и просто иметь возможность изменить fancyGraphics BOOL на TRUE или FALSE, и каждый элемент управления изменяет настройку тени.

Заранее спасибо.

Вот мой XAML

<sys:Boolean x:Key="fancyGraphics" >True</sys:Boolean> 

<Style TargetType="{x:Type Button}"> 
    <Setter Property="Background" Value="#EEE"></Setter> 
    <Setter Property="Foreground" Value="#555"></Setter> 

    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Button}"> 

       <Border Background="{TemplateBinding Background}" BorderThickness="1" BorderBrush="#DDD"> 
        <Grid> 
         <ContentPresenter x:Name="MyContentPresenter" Content="{TemplateBinding Content}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0" /> 
        </Grid> 
       </Border> 

       <ControlTemplate.Triggers> 
        <Trigger Property="IsMouseOver" Value="True"> 
         <Setter Property="Background" Value="#333"></Setter> 
         <Setter Property="BorderBrush" Value="#888"></Setter> 
        </Trigger> 

       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 

    <Style.Triggers> 
     <DataTrigger Binding="{Binding Path=fancyGraphics}" Value="True"> 
      <Setter Property="Effect"> 
       <Setter.Value> 
        <DropShadowEffect BlurRadius="20" 
           Opacity="0.5" 
           ShadowDepth="0" 
           Color="#111" /> 
       </Setter.Value> 
      </Setter> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 
+0

Я попробовал ваш стиль внутри одной кнопки и, только изменяя '' в ' 'и является' fancyGraphics' свойством datacontext и работает для меня – Pikoh

ответ

1

Связывание в DataTrigger ищет свойство с именем fancyGraphics. Но, fancyGraphics - это статический ресурс. Вы должны определить связывание как таковой:

<DataTrigger Binding="{Binding Source={StaticResource fancyGraphics}}" Value="True"> 
    <Setter Property="Effect"> 
     <Setter.Value> 
      <DropShadowEffect BlurRadius="20" 
           Opacity="0.5" 
           ShadowDepth="0" 
           Color="#111" /> 
     </Setter.Value> 
    </Setter> 
</DataTrigger> 
+0

Большое вам спасибо !, я пробовал статический ресурс раньше, но я пропустил источник LOL, его работа сейчас. – Ashley