WPF样式触发器可以这样做吗? [英] Can WPF Style Trigger do this?
问题描述
我的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 theIsSelected
property
(in addition to theDataTrigger
for theState
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屋!