以编程方式依次添加WPF样式触发器和设置器

时间:2016-04-25 10:15:50

标签: c# wpf xaml

我有一个声明如下所示的样式:

<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之前运行。如何确保在触发器之前执行默认设置器?

罗布

0 个答案:

没有答案