我有一个声明如下所示的样式:
<Style x:Key="NRunsBlockMetricsStyle" TargetType="syncfusion:GridCell">
<Setter Property="BorderBrush" Value="Black"/>
<Setter Property="BorderThickness" Value="{Binding RelativeSource={RelativeSource Self},Path=Content.Text, Converter={StaticResource NRunsBMStyleConv}, ConverterParameter=BorderThickness}" />
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding RelativeSource={RelativeSource Self},Path=Content.Text}" Value=""/>
<Condition Binding="{Binding RelativeSource={RelativeSource Self},Path=Content.Text}" Value="{x:Null}"/>
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="White" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
我正在尝试基于此创建代码背后的新样式:
Style BlockActualStyle = new Style(typeof(GridCell), (Style)ctrl.FindResource("NRunsBlockMetricsStyle"));
BlockActualStyle.Setters.Add(new Setter(GridCell.BackgroundProperty, useBrush));
TriggerBase MultiTrigger = BlockActualStyle.BasedOn.Triggers[0];
BlockActualStyle.Triggers.Add(MultiTrigger);
基本上,我正在尝试获取样式,添加默认背景颜色,然后复制并重新添加Multidatatrigger,以便在必要时更改backgroundcolour。如果我在XAML中执行此操作,它将正常工作,因为初始设置器在触发器之前。由于我不得不在代码中执行此操作,我发现它不起作用,很可能是由于触发器以某种方式在setter之前运行。如何确保在触发器之前执行默认设置器?
罗布