指定颜色以WPF工具包图表供LineSeries附近图例项矩形

编程入门 行业动态 更新时间:2024-10-27 14:31:52
本文介绍了指定颜色以WPF工具包图表供LineSeries附近图例项矩形的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我动态地添加供LineSeries到图表如下:

的foreach(KeyValuePair<字符串列表< KeyValuePair<日期时间,双>> ;> tempSeries在yieldSeries){供LineSeries供LineSeries =新供LineSeries(); lineSeries.DependentValuePath =值; lineSeries.IndependentValuePath =键; lineSeries.ItemsSource = tempSeries.Value; lineSeries.Title = tempSeries.Key; lineSeries.SetResourceReference(FrameworkElement.StylePropertyCommonLineSeries); lineSeries.Tag = Brushes.Red; lineSeries.Background = Brushes.Red; yieldTrendChart.Series.Add(供LineSeries);}

我想分配在特定的顺序检测LineSeries实现这一特定的颜色我添加了一个样式折线如下:

<风格X:键= CommonLineSeries的TargetType =图表:供LineSeries支持算法FMP ={StaticResource的{X:类型的图表:供LineSeries}}> < setter属性=模板> < Setter.Value> <的ControlTemplate的TargetType =图表:供LineSeries> <帆布X:NAME =PlotArea> <折线点数={TemplateBinding点}行程={绑定标记,的RelativeSource = {的RelativeSource AncestorType = {X:类型的图表:供LineSeries}}}风格={TemplateBinding PolylineStyle}/> < /帆布> < /控件模板> < /Setter.Value> < /二传手> < /样式和GT;

问题 的颜色是成功分配到图中的然而矩形传说附近的线仍显示由指定颜色随机.NET 如何将我分配同色的矩形,因为我已将其分配给该行??

解决方案

您需要编辑一个LegendItem风格改变传说矩形的颜色。

XAML

窗口x:类=WpfApplication8.Window1的xmlns =schemas.microsoft/winfx/2006/xaml/presentation的xmlns:X =HTTP: //schemas.microsoft/winfx/2006/xaml的xmlns:chartingToolkit =CLR的命名空间:System.Windows.Controls.DataVisualization.Charting;装配= System.Windows.Controls.DataVisualization.Toolkit的xmlns:visualizationToolkit =CLR的命名空间:System.Windows.Controls.DataVisualization;装配= System.Windows.Controls.DataVisualization.Toolkit的xmlns:datavis =CLR的命名空间:System.Windows.Controls .DataVisualization;装配= System.Windows.Controls.DataVisualization.Toolkit标题=窗口1HEIGHT =500WIDTH =700> < Window.Resources> <风格X:键=LineSeriesStyle1的TargetType ={X:类型chartingToolkit:供LineSeries}> < setter属性=IsTabStopVALUE =FALSE/> < setter属性=模板> < Setter.Value> <的ControlTemplate的TargetType ={X:类型chartingToolkit:供LineSeries}> <帆布X:NAME =PlotArea> <折线点数={TemplateBinding点}行程={绑定标记,的RelativeSource = {的RelativeSource AncestorType = {X:类型chartingToolkit:供LineSeries}}}/> < /帆布> < /控件模板> < /Setter.Value> < /二传手> < /样式和GT; < /Window.Resources> <网格和GT; < chartingToolkit:图表X:NAME =mcChart> < chartingToolkit:供LineSeries标签=绿色X:NAME =图DependentValuePath =值IsSelectionEnabled =真IndependentValuePath =密钥的ItemsSource ={结合}风格={StaticResource的LineSeriesStyle1} > < chartingToolkit:LineSeries.LegendItemStyle> <风格的TargetType =chartingToolkit:将LegendItem> < setter属性=模板> < Setter.Value> <的ControlTemplate的TargetType ={X:类型chartingToolkit:将LegendItem}> < BORDER = BorderBrush黑了borderThickness =0> <&StackPanel的GT; < StackPanel的方向=横向> <矩形宽度=12HEIGHT =12填充={绑定的ElementName =图,路径=标签}StrokeThickness =1/> < datavis:标题内容={TemplateBinding内容}前景={绑定的ElementName =图,路径=标签}字号=18保证金=10/> < / StackPanel的> < / StackPanel的> < /边框> < /控件模板> < /Setter.Value> < /二传手> < /样式和GT; < / chartingToolkit:LineSeries.LegendItemStyle> < / chartingToolkit:供LineSeries> < / chartingToolkit:图表> < /网格和GT;

C#

命名空间WpfApplication8

{

公共部分类窗口1:窗口 {公共窗口1( ) {的InitializeComponent(); LoadColumnChartData(); } 私人无效LoadColumnChartData() {((供LineSeries)mcChart.Series [0])的ItemsSource = 新KeyValuePair<字符串, INT> [] {新KeyValuePair<字符串,整数>(项目经理,13),新KeyValuePair<字符串,整数>(CEO,23)}; } }

}

结果

更新

< Window.Resources> <风格X:键=LineSeriesStyle1的TargetType ={X:类型chartingToolkit:供LineSeries}> < setter属性=变量VALUE ={绑定标记,的RelativeSource = {的RelativeSource AncestorType = {X:类型chartingToolkit:供LineSeries}}}>< /二传手> < setter属性=OverridesDefaultStyleVALUE =真>< /二传手> < setter属性=IsTabStopVALUE =FALSE/> < setter属性=模板> < Setter.Value> <的ControlTemplate的TargetType ={X:类型chartingToolkit:供LineSeries}> <帆布X:NAME =PlotArea> <折线X:NAME =折线点数={TemplateBinding点}行程={绑定标记,的RelativeSource = {的RelativeSource TemplatedParent}}/> < /帆布> < /控件模板> < /Setter.Value> < /二传手> < /样式和GT; < /Window.Resources> <网格和GT; < chartingToolkit:图表名=折线图> < chartingToolkit:供LineSeries NAME =chart1标签=蓝色背景=绿色风格={StaticResource的LineSeriesStyle1}标题=KW GastatsDependentValuePath =值IndependentValuePath =密钥的ItemsSource = {结合[0]}IsSelectionEnabled =真> < chartingToolkit:LineSeries.LegendItemStyle> <风格的TargetType ={X:类型chartingToolkit:将LegendItem}> < setter属性=模板> < Setter.Value> <的ControlTemplate的TargetType ={X:类型chartingToolkit:将LegendItem}> < BORDER> <&StackPanel的GT; < StackPanel的方向=横向> <矩形宽度=12HEIGHT =12填充={绑定的ElementName = chart1,路径=标签}行程={结合背景}StrokeThickness =1/> < datavis:标题内容={TemplateBinding内容}前景={绑定的ElementName = chart1,路径=标签}字号=18保证金=10/> < / StackPanel的> < / StackPanel的> < /边框> < /控件模板> < /Setter.Value> < /二传手> < /样式和GT; < / chartingToolkit:LineSeries.LegendItemStyle> < / chartingToolkit:供LineSeries> < chartingToolkit:供LineSeries NAME =chart2标签=绿色风格={StaticResource的LineSeriesStyle1}标题=Preu KWDependentValuePath =值IndependentValuePath =密钥的ItemsSource ={结合[1 ]}IsSelectionEnabled =真> < chartingToolkit:LineSeries.LegendItemStyle> <风格的TargetType ={X:类型chartingToolkit:将LegendItem}> < setter属性=模板> < Setter.Value> <的ControlTemplate的TargetType ={X:类型chartingToolkit:将LegendItem}> < BORDER> <&StackPanel的GT; < StackPanel的方向=横向> <矩形宽度=12HEIGHT =12填充={绑定的ElementName = chart2,路径=标签}StrokeThickness =1/> < datavis:标题内容={TemplateBinding内容}前景={绑定的ElementName = chart2,路径=标签}字号=18保证金=10/> < / StackPanel的> < / StackPanel的> < /边框> < /控件模板> < /Setter.Value> < /二传手> < /样式和GT; < / chartingToolkit:LineSeries.LegendItemStyle> < / chartingToolkit:供LineSeries> < / chartingToolkit:图表> < /网格和GT;

C#代码

的InitializeComponent(); 名单,LT; KeyValuePair<日期时间,INT>> llistaGastats =新的List< KeyValuePair<日期时间,INT>>(); llistaGastats.Add(新KeyValuePair<日期时间,INT>(DateTime.Now,100)); llistaGastats.Add(新KeyValuePair<日期时间,INT>(DateTime.Now.AddMonths(1),200)); 名单,LT; KeyValuePair<日期时间,INT>> llistaPreu =新的List< KeyValuePair<日期时间,INT>>(); llistaPreu.Add(新KeyValuePair<日期时间,INT>(DateTime.Now,300)); llistaPreu.Add(新KeyValuePair<日期时间,INT>(DateTime.Now.AddMonths(1),300)); 变种dataSourceList =新的List<名单,LT; KeyValuePair<日期时间,INT>>>(); dataSourceList.Add(llistaGastats); dataSourceList.Add(llistaPreu); lineChart.DataContext = dataSourceList;

结果

I am adding lineseries to a chart dynamically as follows.

foreach (KeyValuePair<string, List<KeyValuePair<DateTime, double>>> tempSeries in yieldSeries) { LineSeries lineSeries = new LineSeries(); lineSeries.DependentValuePath = "Value"; lineSeries.IndependentValuePath = "Key"; lineSeries.ItemsSource = tempSeries.Value; lineSeries.Title = tempSeries.Key; lineSeries.SetResourceReference(FrameworkElement.StyleProperty,"CommonLineSeries"); lineSeries.Tag = Brushes.Red; lineSeries.Background = Brushes.Red; yieldTrendChart.Series.Add(lineSeries); }

I wish to assign specific color in specific order for the lineseries to attain this I have added a style for the polyline as follows

<Style x:Key="CommonLineSeries" TargetType="charting:LineSeries" BasedOn="{StaticResource {x:Type charting:LineSeries}}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="charting:LineSeries"> <Canvas x:Name="PlotArea"> <Polyline Points="{TemplateBinding Points}" Stroke="{Binding Tag, RelativeSource={RelativeSource AncestorType={x:Type charting:LineSeries}}}" Style="{TemplateBinding PolylineStyle}"/> </Canvas> </ControlTemplate> </Setter.Value> </Setter> </Style>

Problem The color is successfully assigned to the lines in the graph however the rectangle near the legend still shows the color assigned by randomly. How shall I assign the same color to the rectangle as I have assigned it to the line??

解决方案

You need to edit LegendItem Style to change color of legend rectangle.

xaml

Window x:Class="WpfApplication8.Window1" xmlns="schemas.microsoft/winfx/2006/xaml/presentation" xmlns:x="schemas.microsoft/winfx/2006/xaml" xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit" xmlns:visualizationToolkit="clr-namespace:System.Windows.Controls.DataVisualization;assembly=System.Windows.Controls.DataVisualization.Toolkit" xmlns:datavis ="clr-namespace:System.Windows.Controls.DataVisualization;assembly=System.Windows.Controls.DataVisualization.Toolkit" Title="Window1" Height="500" Width="700"> <Window.Resources> <Style x:Key="LineSeriesStyle1" TargetType="{x:Type chartingToolkit:LineSeries}"> <Setter Property="IsTabStop" Value="False"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type chartingToolkit:LineSeries}"> <Canvas x:Name="PlotArea"> <Polyline Points="{TemplateBinding Points}" Stroke="{Binding Tag,RelativeSource={RelativeSource AncestorType={x:Type chartingToolkit:LineSeries}}}" /> </Canvas> </ControlTemplate> </Setter.Value> </Setter> </Style> </Window.Resources> <Grid> <chartingToolkit:Chart x:Name="mcChart" > <chartingToolkit:LineSeries Tag="Green" x:Name="chart" DependentValuePath="Value" IsSelectionEnabled="True" IndependentValuePath="Key" ItemsSource="{Binding}" Style="{StaticResource LineSeriesStyle1}"> <chartingToolkit:LineSeries.LegendItemStyle> <Style TargetType="chartingToolkit:LegendItem" > <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type chartingToolkit:LegendItem}"> <Border BorderBrush="Black" BorderThickness="0"> <StackPanel> <StackPanel Orientation="Horizontal" > <Rectangle Width="12" Height="12" Fill="{Binding ElementName=chart,Path=Tag}" StrokeThickness="1" /> <datavis:Title Content="{TemplateBinding Content}" Foreground="{Binding ElementName=chart,Path=Tag}" FontSize="18" Margin="10"/> </StackPanel> </StackPanel> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> </chartingToolkit:LineSeries.LegendItemStyle> </chartingToolkit:LineSeries> </chartingToolkit:Chart> </Grid>

c#

namespace WpfApplication8

{

public partial class Window1 : Window { public Window1() { InitializeComponent(); LoadColumnChartData(); } private void LoadColumnChartData() { ((LineSeries)mcChart.Series[0]).ItemsSource = new KeyValuePair<string, int>[]{ new KeyValuePair<string,int>("Project Manager", 13), new KeyValuePair<string,int>("CEO", 23),}; } }

}

Result

Update

<Window.Resources> <Style x:Key="LineSeriesStyle1" TargetType="{x:Type chartingToolkit:LineSeries}"> <Setter Property="Tag" Value="{Binding Tag,RelativeSource={RelativeSource AncestorType={x:Type chartingToolkit:LineSeries}}}"></Setter> <Setter Property="OverridesDefaultStyle" Value="True"></Setter> <Setter Property="IsTabStop" Value="False"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type chartingToolkit:LineSeries}"> <Canvas x:Name="PlotArea"> <Polyline x:Name="polyline" Points="{TemplateBinding Points}" Stroke="{Binding Tag,RelativeSource={RelativeSource TemplatedParent}}" /> </Canvas> </ControlTemplate> </Setter.Value> </Setter> </Style> </Window.Resources> <Grid> <chartingToolkit:Chart Name="lineChart"> <chartingToolkit:LineSeries Name="chart1" Tag="Blue" Background="Green" Style="{StaticResource LineSeriesStyle1}" Title="KW Gastats" DependentValuePath="Value" IndependentValuePath="Key" ItemsSource="{Binding [0]}" IsSelectionEnabled="True"> <chartingToolkit:LineSeries.LegendItemStyle> <Style TargetType="{x:Type chartingToolkit:LegendItem}" > <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type chartingToolkit:LegendItem}"> <Border > <StackPanel> <StackPanel Orientation="Horizontal" > <Rectangle Width="12" Height="12" Fill="{Binding ElementName=chart1,Path=Tag}" Stroke="{Binding Background}" StrokeThickness="1" /> <datavis:Title Content="{TemplateBinding Content}" Foreground="{Binding ElementName=chart1,Path=Tag}" FontSize="18" Margin="10"/> </StackPanel> </StackPanel> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> </chartingToolkit:LineSeries.LegendItemStyle> </chartingToolkit:LineSeries> <chartingToolkit:LineSeries Name="chart2" Tag="Green" Style="{StaticResource LineSeriesStyle1}" Title="Preu KW" DependentValuePath="Value" IndependentValuePath="Key" ItemsSource="{Binding [1]}" IsSelectionEnabled="True" > <chartingToolkit:LineSeries.LegendItemStyle> <Style TargetType="{x:Type chartingToolkit:LegendItem}" > <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type chartingToolkit:LegendItem}"> <Border > <StackPanel> <StackPanel Orientation="Horizontal" > <Rectangle Width="12" Height="12" Fill="{Binding ElementName=chart2,Path=Tag}" StrokeThickness="1" /> <datavis:Title Content="{TemplateBinding Content}" Foreground="{Binding ElementName=chart2,Path=Tag}" FontSize="18" Margin="10"/> </StackPanel> </StackPanel> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> </chartingToolkit:LineSeries.LegendItemStyle> </chartingToolkit:LineSeries> </chartingToolkit:Chart> </Grid>

c# Code

InitializeComponent(); List<KeyValuePair<DateTime, int>> llistaGastats = new List<KeyValuePair<DateTime, int>>(); llistaGastats.Add(new KeyValuePair<DateTime, int>(DateTime.Now, 100)); llistaGastats.Add(new KeyValuePair<DateTime, int>(DateTime.Now.AddMonths(1), 200)); List<KeyValuePair<DateTime, int>> llistaPreu = new List<KeyValuePair<DateTime, int>>(); llistaPreu.Add(new KeyValuePair<DateTime, int>(DateTime.Now, 300)); llistaPreu.Add(new KeyValuePair<DateTime, int>(DateTime.Now.AddMonths(1), 300)); var dataSourceList = new List<List<KeyValuePair<DateTime, int>>>(); dataSourceList.Add(llistaGastats); dataSourceList.Add(llistaPreu); lineChart.DataContext = dataSourceList;

Result

更多推荐

指定颜色以WPF工具包图表供LineSeries附近图例项矩形

本文发布于:2023-11-10 23:00:46,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1576700.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:工具包   矩形   图表   图例   颜色

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!