Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# TeeChart WPF-更改系列类型问题-保留原始、混合样式_C#_.net_Wpf_Teechart - Fatal编程技术网

C# TeeChart WPF-更改系列类型问题-保留原始、混合样式

C# TeeChart WPF-更改系列类型问题-保留原始、混合样式,c#,.net,wpf,teechart,C#,.net,Wpf,Teechart,因此,我正在构建WPF TeeChart编辑器,但在尝试使用静态方法更改图表上系列的类型时遇到了一些问题: Steema.TeeChart.WPF.style.Series.ChangeType(参考系列s,类型newType) 原始代码理念: //user has selected a sample chart showing the Series Type they want Type targetType = selectedChart.Series[0].GetType(); //Se

因此,我正在构建WPF TeeChart编辑器,但在尝试使用静态方法更改图表上系列的类型时遇到了一些问题:
Steema.TeeChart.WPF.style.Series.ChangeType(参考系列s,类型newType)

原始代码理念:

//user has selected a sample chart showing the Series Type they want
Type targetType = selectedChart.Series[0].GetType();

//SelectedItems contains Series objects already on a chart
for (int i = 0; i < SelectedItems.Count; i++)
{
    Series sS = (Series) SelectedItems[i];
    Series.ChangeType(ref sS, targetType);
}
//用户选择了一个示例图表,显示了所需的系列类型
类型targetType=selectedChart.Series[0].GetType();
//SelectedItems包含图表上已存在的系列对象
for(int i=0;i

当上面的代码运行时,我的图表以两个系列结束:原始系列和一个新系列,它是原始系列和目标系列的混合

例如,如果我在图表上放置了一个带有4个随机值的点序列,然后运行上面的代码,SelectedItems中唯一的内容就是我刚刚创建的点序列,那么我的图表有一个新的类型行序列,但上面有点标记,以及原始点序列

我修改了上面的代码以删除重复项,然后我意识到有什么东西正在从SelectedItems集合中删除其他项。下面是删除原始系列的最后一段代码,当SelectedItems集合中有多个系列时,该代码也会起作用

//Added List to keep selected items since they were being lost
List<Series> selected = new List<Series>(SelectedItems.Count);
for (int x = 0; x < SelectedItems.Count; x++)
    selected.Add((Series) SelectedItems[x]);


for (int i = 0; i < selected.Count; i++)
{
    Series sS = selected[i];
    int cI = chart.Series.IndexOf(sS); //added to track index in chart

    Series.ChangeType(ref sS, targetType);

    //The following line ensures overwite of original Series in chart
    // since new Series is being created inside above method
    chart.Series[cI] = sS;

    //finally, remove original Series from chart
    chart.Series.Remove(selected[i]);
}
//添加了保留选定项目的列表,因为它们正在丢失
所选列表=新列表(SelectedItems.Count);
对于(int x=0;x

这解决了将原始系列保留在图表上的问题,但我仍然无法理解为什么该系列的样式会变成原始系列和目标系列类型的奇怪混合

在我的方法中是否有我遗漏或忽略的东西?是否有更好的方法来调用以更改序列的类型?我在TeeChart文档中找不到任何有用的信息


我不认为这种行为是故意的,因为当我将从该方法获得的输出与WinForms TeeChart编辑器进行比较时,WinForms版本没有混合该系列的样式。

我担心这是TeeChart WPF的一个错误,我们已将其添加到错误列表报告中,编号为[TW16016232]。我们将尝试在即将发布的Teechart for.Net维护版本中修复它。另一方面,我建议您解决问题的一个变通方法,它包括在这种情况下,将源系列替换为点系列

 private void InitializeChart()
        {
            tChart1.Series.Clear();
            Steema.TeeChart.WPF.Styles.Line line1 = new Steema.TeeChart.WPF.Styles.Line(tChart1.Chart);
            Steema.TeeChart.WPF.Styles.Line line2 = new Steema.TeeChart.WPF.Styles.Line(tChart1.Chart);
            line2.FillSampleValues();
            line1.FillSampleValues();

        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            for (int i = 0; i < 2; i++)
            {
                Steema.TeeChart.WPF.Styles.Points s = new Steema.TeeChart.WPF.Styles.Points(tChart1.Chart);
                s.DataSource = tChart1[i];
                tChart1[i].Visible = false;
            }

        }
private void InitializeChart()
{
tChart1.Series.Clear();
Steema.TeeChart.WPF.Styles.line1=新的Steema.TeeChart.WPF.Styles.Line(tChart1.Chart);
Steema.TeeChart.WPF.Styles.line2=新的Steema.TeeChart.WPF.Styles.Line(tChart1.Chart);
line2.FillSampleValues();
line1.FillSampleValues();
}
私有无效按钮1\u单击(对象发送者,路由目标)
{
对于(int i=0;i<2;i++)
{
Steema.TeeChart.WPF.style.Points s=新的Steema.TeeChart.WPF.style.Points(tChart1.Chart);
s、 数据源=tChart1[i];
tChart1[i].Visible=false;
}
}
你能告诉我们,如果前面的代码现在能像你期望的那样工作吗

我希望这会有所帮助

谢谢

致以最良好的祝愿, 桑德拉·帕佐斯

Steema支持中心