【发布时间】:2013-05-17 20:25:55
【问题描述】:
有没有办法在 WPF 中动态更改(和应用)样式?
假设我有在 XAML 中声明的样式:
<Style TargetType="local:MyLine"
x:Key="MyLineStyleKey" x:Name="MyLineStyleName">
<Setter Property="Fill" Value="Pink"/>
<Style.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter Property="Fill" Value="Blue" />
</Trigger>
</Style.Triggers>
</Style>
稍后,我需要更改
Pink颜色,例如Green,并且所有样式为MyLineStyleKey的行都变为绿色。一条线在释放时为粉红色,在选择时为蓝色...现在,我需要更改未选择的属性(粉红色到绿色)...,所以这不仅仅是将其设置为其他颜色,触发器(选择>蓝色)将不再工作......这可能吗?怎么样?是否可以绑定到样式中的粉红色,例如按钮背景,以反映当前使用的样式颜色?
编辑:
对于 1,我尝试过:
Style s = (Style)this.Resources["MyLineStyleKey"];
(s.Setters[0] as Setter).Value = background;
(s.Setters[1] as Setter).Value = background;
但是发生了异常:
在使用“SetterBase”之后 (密封),不能修改。
【问题讨论】:
-
这可以动态完成。