2014-10-17 5 views
0

Я очень новичок в WPF (и, честно говоря, я не знаю, почему WinForms существует, потому что, на мой взгляд, это FAR уступает WPF), поэтому я все еще не совсем в разгаре вещей.Как применить триггер к изображению

У меня есть TabControl, и внутри каждого TabHeader есть изображение. По сути, я просто хочу, чтобы выбранный TabItem имел изображение с гауссовым размытым радиусом 2 и всеми неизмененными TabItems с изображением с гауссовским размывом 8.

Я просматривал много материал по XAML, WPF, триггерам и т. д., и я просто перегружен информацией. Может ли кто-нибудь помочь мне?

+0

Можете ли вы показать шаблон заголовка вкладки, если у вас есть один? – dkozl

+0

@dkozl У меня нет шаблонов в моем XAML-файле, но я использую [MahApps.Metro] (http://mahapps.com/), чтобы стилизовать все, если это поможет. – Minato

+0

'' Я не знаю, почему WinForms существует даже, потому что, на мой взгляд, '' WPF нуждается в плагине Silverlight, тогда как 'WinForm' вам не нужен плагин. Reach v. Rich – Zuzlx

ответ

3

Вы можете достичь этого, изменив Effect на изображение в зависимости от TabItem.IsSelected. Допустим, это ваш Image в Header

<Image Source="...">       
    <Image.Style> 
     <Style TargetType="{x:Type Image}"> 
      <Setter Property="Effect"> 
       <Setter.Value> 
        <BlurEffect Radius="8"/> 
       </Setter.Value> 
      </Setter> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TabItem}}, Path=IsSelected}" Value="True"> 
        <Setter Property="Effect"> 
         <Setter.Value> 
          <BlurEffect Radius="2"/> 
         </Setter.Value> 
        </Setter> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Image.Style> 
</Image> 

в основном вы создаете DataTrigger который связывание идет вверх визуальное дерево TabItem и триггер IsSelected=true

+1

Ты громкий гений. Хахаха, WPF потрясающе! Благодаря :) – Minato

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