WPF样式触发器可以这样做吗? [英] Can WPF Style Trigger do this?

查看:109
本文介绍了WPF样式触发器可以这样做吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的from中有一个datagrid,我使用DataTrigger来设置DataGridCell的前景色以确保它看起来很清晰,就像这样:

There''s a datagrid in my from,and I ues a DataTrigger to set the DataGridCell''s foreground color to ensure that it looks clear,just like this:

<Style TargetType="my:DataGridCell">
     <Style.Triggers>
          <DataTrigger Binding="{Binding Path=State}" Value="0">
               <Setter Property="Foreground" Value="Black" />
          </DataTrigger>
          <DataTrigger Binding="{Binding Path=State}" Value="1">
               <Setter Property="Foreground" Value="Green" />
          </DataTrigger>
     </Style.Triggers>
</Style>





然后我想设置它'' StyleTrigger,以确保它们具有相同的背景和BorderBrush,就像这样:





And then I want to set it''s StyleTrigger,to make sure they have same background and BorderBrush,just like this:

<Style.Triggers >
    <Trigger Property="IsSelected" Value="True">
        <Setter Property="Background" Value="#d4ecff"/>
        <Setter Property="BorderThickness" Value="0"></Setter>
        <Setter Property="BorderBrush" Value="#d4ecff"></Setter>
    </Trigger>
</Style.Triggers>





然后我有一个问题,当我选择一个单元格时,单元格前景改变白色因为我没有设置它所以它被设置为默认颜色。

我想实现这个目标:无论选择哪个单元格,单元格背景都会改变(#d4ecff),但前景将是不改变:如果它是绿色,它保持绿色,如果它是黑色,它保持黑色。



我怎么能这样做?谢谢大家帮助我!



but then I have a question,when I selected one cell,the cell foreground change White because I didn''t set it so it been set a acquiescent color.
I want to achieve this:whichever cell i select,the cell background will change same(#d4ecff),but the foreground will not change:If it''s Green,it keeps Green and if it''s Black ,it keeps Black.

How Can I do this ? thank you everyone helps me!

推荐答案





我认为你可以使用MultiDataTrigger实现这一点对于 IsSelected 属性

(除 DataTrigger 之外状态属性)如下:



Hi,

I think you can achieve this using a MultiDataTrigger for the IsSelected property
(in addition to the DataTrigger for the State property) like so:

<MultiDataTrigger>
   <MultiDataTrigger.Conditions>
      <Condition Binding="{Binding Path=IsSelected}" Value="True" />
      <Condition Binding="{Binding Path=State}" Value="0" />
   </MultiDataTrigger.Conditions>
   <MultiDataTrigger.Setters>
      <Setter Property="Background" Value="#d4ecff" />
      <Setter Property="BorderThickness" Value="0" />
      <Setter Property="BorderBrush" Value="#d4ecff" />
      <Setter Property="Foreground" Value="Black" />
   </MultiDataTrigger.Setters>
</MultiDataTrigger>

<MultiDataTrigger>
   <MultiDataTrigger.Conditions>
      <Condition Binding="{Binding Path=IsSelected}" Value="True" />
      <Condition Binding="{Binding Path=State}" Value="1" />
   </MultiDataTrigger.Conditions>
   <MultiDataTrigger.Setters>
      <Setter Property="Background" Value="#d4ecff" />
      <Setter Property="BorderThickness" Value="0" />
      <Setter Property="BorderBrush" Value="#d4ecff" />
      <Setter Property="Foreground" Value="Green" />
   </MultiDataTrigger.Setters>
</MultiDataTrigger>





再见,托马斯。



Bye, Thomas.


这篇关于WPF样式触发器可以这样做吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆