我有一个不断拉数据的图表,目前刷新率设置为 2 分钟。问题是每次图表更新时,颜色都会改变为循环中的下一个颜色。我想也许我可以让图表在刷新时完全重置,每次总是从 0 或 1 开始调色板颜色,但到目前为止还没有运气。有任何想法吗?
更新
一些 XAML/代码以获得更好的想法。
DynamicSeriesChart 头的 XAML
<ana:DynamicSeriesChart SeriesSource="{Binding ChartSeries}" Title="{Binding ChartTitle}" Palette="{StaticResource ChartPalette}" Grid.Row="1" LegendTitle="Legend" Margin="0,25,0,0" Visibility="{Binding ShowGraph, Converter={StaticResource BoolToVisConv}}">
图表模板的 XAML
<ana:DynamicSeriesChart.Template>
<ControlTemplate TargetType="charting:Chart">
<Border Background="{DynamicResource ContainerElementContentPanelBgBrush}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<datavis:Title Content="{TemplateBinding Title}" Style="{TemplateBinding TitleStyle}" />
<chartingprimitives:EdgePanel x:Name="ChartArea" Grid.Row="1" Margin="0,15,0,15" Style="{TemplateBinding ChartAreaStyle}">
<Grid Canvas.ZIndex="-1" Style="{TemplateBinding PlotAreaStyle}" />
<Border Canvas.ZIndex="10" BorderBrush="#FF919191" BorderThickness="1" />
</chartingprimitives:EdgePanel>
<datavis:Legend x:Name="Legend" Style="{TemplateBinding LegendStyle}" Grid.Row="2" HorizontalAlignment="Left">
<datavis:Legend.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</datavis:Legend.ItemsPanel>
</datavis:Legend>
</Grid>
</Border>
</ControlTemplate>
</ana:DynamicSeriesChart.Template>
调色板样本
<Style x:Key="ColumnSeries1Style" TargetType="Control">
<Setter Property="Background" Value="#FFFFA500" />
</Style>
<Style x:Key="ColumnSeries1Style2" TargetType="Shape">
<Setter Property="Fill" Value="#FFFFA500" />
<Setter Property="Stroke" Value="#FFFFA500" />
</Style>
...
...
<datavis:ResourceDictionaryCollection x:Key="ChartPalette">
<ResourceDictionary>
<Style x:Key="DataPointStyle" BasedOn="{StaticResource ColumnSeries1Style}" TargetType="Control" />
<Style x:Key="DataShapeStyle" BasedOn="{StaticResource ColumnSeries1Style2}" TargetType="Shape" />
</ResourceDictionary>
...
重新加载调用 Refresh(),这是一个设置新参数的长查询。这将转到 LoadData(),然后转到 ApplyResults(),后者会清除 ChartSeries,然后应用新值。
(我很犹豫是否要放置代码隐藏或cs,因为它们都不是我的(并且仍然让我有些困惑,到处都是参考和参考)。我在这个项目中参与它仍然相对较新,而且仍然在尝试解决这个问题时发现新的部分。如果需要细节或操作流程,我会尽我所能去寻找那些部分。)
刷新后,图表(可以是区域、条形、柱形或线形)将在调色板颜色之间循环。例如,假设 3 个条形图,当前为红色/蓝色/橙色。刷新以使用新数据更新图表时,颜色将更改并循环到调色板中的下一个 - 比如说紫色/黄色/绿色。每次刷新数据时,它将继续在整个调色板中循环(并因此更改图表及其图例)。即使没有自定义调色板也会发生这种情况。
更新
仔细观察这些问题,“线”图的行为与其他图不同。所以只有柱形图/条形图/面积图有这个问题。