如何以编程方式添加更多样式设置器?当我尝试时,我得到一个InvalidOperationException异常(正在使用SetterBaseCollection)

Mit*_*áti 2 c# wpf charts wpf-style

我的App.xaml文件中有几个样式定义.像这样:

<Application x:Class="MyClient.App" ... >
    <Application.Resources>
        <SolidColorBrush x:Key="color1" Color="#FF7D7D" />
        <SolidColorBrush x:Key="color2" Color="#FF7D7E" />

        <Style x:Key="styleFor1" TargetType="charting:ColumnDataPoint">
            <Setter Property="Background" Value="{StaticResource color1}" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="charting:ColumnDataPoint">
                        <Grid>
                            <Rectangle>
                                <Rectangle.Fill>
                                    <LinearGradientBrush>
                                        <GradientStop Color="#ffff3737" Offset="0" />
                                        <GradientStop Color="#80000000" Offset="1" />
                                    </LinearGradientBrush>
                                </Rectangle.Fill>
                            </Rectangle>
                            <ToolTipService.ToolTip>
                                <StackPanel>
                                    <ContentControl Content="VALUES:" FontWeight="Bold" />
                                    <ContentControl Content="{TemplateBinding FormattedIndependentValue}" />
                                    <ContentControl Content="{TemplateBinding FormattedDependentValue}" />
                                </StackPanel>
                            </ToolTipService.ToolTip>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
Run Code Online (Sandbox Code Playgroud)

我生成一个图表.并给它的DataPointStyle:

Style dpStyle = Application.Current.Resources["styleFor1"]
Run Code Online (Sandbox Code Playgroud)

之后,我想在这个dpStyle中添加一些Setter.完成后我将图表的DataPointStyle设置为此dpStyle.然后我得到了例外.我该怎么办?请指导我.

更新:

异常详细信息(可能需要):

InvalidOperationException未处理

{"在'SetterBaseCollection'使用(密封)之后,它无法修改."}

TargetSite:{Void CheckSealed()}

Mit*_*áti 5

我找到了解决方案.我不得不使用Style类的consturctors的这个重载:

public Style(Type targetType, Style basedOn);
Run Code Online (Sandbox Code Playgroud)

只需将Application.Current中的Style传递给它即可解决问题.凉.