2014-10-17 48 views
0

我对WPF很陌生(坦率地说,我不知道为什么WinForms甚至存在,因为在我看来它的FAR不如WPF),所以我还没有完全摆脱东西的。如何应用触发器图像

我有一个TabControl,并且每个TabHeader里面都有一个图像。本质上,我只想让选定的TabItem具有高斯模糊半径为2的图像,并且所有未选择的TabItem具有高斯模糊为8的图像。

我一直在寻找很多XAML,WPF,触发器等方面的材料,我只是被信息所淹没。有人可以帮我吗?

+0

你能告诉你的标签头部模板,如果你有一个? – dkozl 2014-10-17 17:37:30

+0

@dkozl我的XAML文件中没有任何模板,但是我使用[MahApps.Metro](http://mahapps.com/)来设置样式,如果有帮助的话。 – Minato 2014-10-17 17:45:22

+0

'“我不知道为什么WinForms甚至存在,因为在我看来,”'WPF需要'Silverlight'插件,而'WinForm'你不需要插入。'达到v。Rich – Zuzlx 2014-10-17 18:01:05

回答

3

您可以通过在图像上更改Effect来实现此目的,具体取决于TabItem.IsSelected。比方说,这是你ImageHeader

<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 2014-10-17 17:59:05