C# 如何以编程方式添加更多样式设置器?当我尝试时,我得到一个InvalidOperationException异常(SetterBaseCollection正在使用)
我的App.xaml文件中有几个样式定义。像这样:C# 如何以编程方式添加更多样式设置器?当我尝试时,我得到一个InvalidOperationException异常(SetterBaseCollection正在使用),c#,wpf,charts,wpf-style,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" /> <
<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>
在那之后,我想在这个dpStyle中添加更多的setter。完成后,我将图表的DataPointStyle设置为这个dpStyle。然后我得到了一个例外。我该怎么办?请引导我
更新:
异常详细信息(可能需要):
未处理无效操作异常
{“SetterBaseCollection”正在使用(已密封)后,无法对其进行修改。”}
TargetSite:{Void CheckSealed()}我找到了解决方案。我不得不使用Style类的constructor重载:
public Style(Type targetType, Style basedOn);
只需从应用程序中传递样式即可。当前。。。解决了这个问题。酷。我想出了解决办法。我不得不使用Style类的constructor重载:
public Style(Type targetType, Style basedOn);
只需从应用程序中传递样式即可。当前。。。解决了这个问题。酷。只是出于好奇。。为什么要动态添加setter?因为我的图表的分辨率取决于用户选择的内容:每小时、每天、每月等。根据选择,我必须自定义显示日期时间的IndependentValueStringFormatProperty。yyyy。嗯,或者嗯,等等。。。有很多这样的组合,我不想在app.xaml中为每一个创建样式。你不能使用触发器吗?只是出于好奇。。为什么要动态添加setter?因为我的图表的分辨率取决于用户选择的内容:每小时、每天、每月等。根据选择,我必须自定义显示日期时间的IndependentValueStringFormatProperty。yyyy。嗯,或者嗯,等等。。。有很多这样的组合,我不想在app.xaml中为每一个创建样式。你不能使用触发器吗?