Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.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# XamDataChart打印颜色和标记选项_C#_Wpf_Colors_Infragistics_Marker - Fatal编程技术网

C# XamDataChart打印颜色和标记选项

C# XamDataChart打印颜色和标记选项,c#,wpf,colors,infragistics,marker,C#,Wpf,Colors,Infragistics,Marker,我正在使用WPF和c#测试Infragistics最新的XamDataChart。有没有人知道如何更改在折线图上绘制的数据点之间的线的颜色 我还想只在一些绘制点上放置标记。我可以使用MarkerType=“None”打开和关闭整个系列的标记,但还没有找到一种方法,可以根据与布尔值的数据绑定来标记某些数据点,布尔值也是用于打印的集合的一部分 这似乎是相当基本的东西,但到目前为止,我不知所措 如有任何意见或建议,将不胜感激 public class AbcData : BindableBase {

我正在使用WPF和c#测试Infragistics最新的XamDataChart。有没有人知道如何更改在折线图上绘制的数据点之间的线的颜色

我还想只在一些绘制点上放置标记。我可以使用MarkerType=“None”打开和关闭整个系列的标记,但还没有找到一种方法,可以根据与布尔值的数据绑定来标记某些数据点,布尔值也是用于打印的集合的一部分

这似乎是相当基本的东西,但到目前为止,我不知所措

如有任何意见或建议,将不胜感激

public class AbcData : BindableBase
{
    private Single _dataValue;
    private MarkerType _error;

    public Single DataValue
    {
        get { return _dataValue; }
        set { SetProperty(ref _dataValue, value); }
    }

    public MarkerType Error
    {
        get { return _error; }
        set { SetProperty(ref _error, value); }
    }
}

public class AbcDataSource
{
    private readonly ObservableCollection<AbcData> _rawMDP = new ObservableCollection<AbcData>();

    public ObservableCollection<AbcData> RawMDP
    {
        get { return _rawMDP; }
    }
}

<Grid>
    <Grid.DataContext>
    <Data:AbcDataSource/>
    </Grid.DataContext>

    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="16" />
    </Grid.RowDefinitions>

    <ig:XamDataChart x:Name="RTChart" Grid.Row="0" HorizontalZoomable="True" WindowScaleHorizontal="0.25"
            WindowPositionHorizontal="1" HorizontalZoombarVisibility="Visible" VerticalZoomable="True"
            VerticalZoombarVisibility="Visible" PlotAreaBackground="Black" CrosshairVisibility="Visible" Background="Black">

        <ig:XamDataChart.Axes>
            <ig:NumericYAxis x:Name="YAxis" Interval="1" Label="{}{:n2}" >
                <ig:NumericYAxis.LabelSettings>
                    <ig:AxisLabelSettings Location="OutsideRight" Foreground="White" FontSize="10"
                            Extent="45" />
                </ig:NumericYAxis.LabelSettings>
            </ig:NumericYAxis>
            <ig:CategoryXAxis x:Name="XAxis" Label="{}{XDateTime:HH:mm}" ItemsSource="{Binding RawMDP}" >
                <ig:CategoryXAxis.LabelSettings>
                    <ig:AxisLabelSettings Foreground="White" FontSize="10" />
                </ig:CategoryXAxis.LabelSettings>
            </ig:CategoryXAxis>
        </ig:XamDataChart.Axes>

        <ig:XamDataChart.Series>

            <ig:LineSeries x:Name="DataValue"
                                MarkerType="{Binding RawMDP/Error}"
                                XAxis="{Binding ElementName=XAxis}"
                                YAxis="{Binding ElementName=YAxis}"
                                ItemsSource="{Binding Path=RawMDP}"
                                ValueMemberPath="DataValue" />

        </ig:XamDataChart.Series>

    </ig:XamDataChart>

</Grid>

我已经尝试了我能想到的一切来让这个工作,但没有乐趣

在下面的代码中,我试图在不丢失问题本质的情况下尽可能地简化。它看起来相当简单,除了MarkerType数据绑定之外,其他一切都可以正常工作。我已将错误类型从bool更改为MarkerType。我在AbcDataSources集合中有大量的AbcData对象集合。数据上下文是在网格上设置的。LineSeries的数据正常,图表显示线条

奇怪的是,我已经将所有错误属性设置为enum MarkerType.Circle类型,并且在Xaml设计器中显示了这些圆。当程序运行时,它们不会运行

其他信息:Im使用VS2012、.NET4.5、Infragistics WPF 2012 V2

再次感谢您为理解这一点提供的任何帮助

public class AbcData : BindableBase
{
    private Single _dataValue;
    private MarkerType _error;

    public Single DataValue
    {
        get { return _dataValue; }
        set { SetProperty(ref _dataValue, value); }
    }

    public MarkerType Error
    {
        get { return _error; }
        set { SetProperty(ref _error, value); }
    }
}

public class AbcDataSource
{
    private readonly ObservableCollection<AbcData> _rawMDP = new ObservableCollection<AbcData>();

    public ObservableCollection<AbcData> RawMDP
    {
        get { return _rawMDP; }
    }
}

<Grid>
    <Grid.DataContext>
    <Data:AbcDataSource/>
    </Grid.DataContext>

    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="16" />
    </Grid.RowDefinitions>

    <ig:XamDataChart x:Name="RTChart" Grid.Row="0" HorizontalZoomable="True" WindowScaleHorizontal="0.25"
            WindowPositionHorizontal="1" HorizontalZoombarVisibility="Visible" VerticalZoomable="True"
            VerticalZoombarVisibility="Visible" PlotAreaBackground="Black" CrosshairVisibility="Visible" Background="Black">

        <ig:XamDataChart.Axes>
            <ig:NumericYAxis x:Name="YAxis" Interval="1" Label="{}{:n2}" >
                <ig:NumericYAxis.LabelSettings>
                    <ig:AxisLabelSettings Location="OutsideRight" Foreground="White" FontSize="10"
                            Extent="45" />
                </ig:NumericYAxis.LabelSettings>
            </ig:NumericYAxis>
            <ig:CategoryXAxis x:Name="XAxis" Label="{}{XDateTime:HH:mm}" ItemsSource="{Binding RawMDP}" >
                <ig:CategoryXAxis.LabelSettings>
                    <ig:AxisLabelSettings Foreground="White" FontSize="10" />
                </ig:CategoryXAxis.LabelSettings>
            </ig:CategoryXAxis>
        </ig:XamDataChart.Axes>

        <ig:XamDataChart.Series>

            <ig:LineSeries x:Name="DataValue"
                                MarkerType="{Binding RawMDP/Error}"
                                XAxis="{Binding ElementName=XAxis}"
                                YAxis="{Binding ElementName=YAxis}"
                                ItemsSource="{Binding Path=RawMDP}"
                                ValueMemberPath="DataValue" />

        </ig:XamDataChart.Series>

    </ig:XamDataChart>

</Grid>
public类AbcData:BindableBase
{
私有单数据值;
私有标记类型_错误;
公共单一数据值
{
获取{return\u dataValue;}
set{SetProperty(ref_dataValue,value);}
}
公共标记类型错误
{
获取{return\u error;}
set{SetProperty(ref_error,value);}
}
}
公共类ABCDATA源
{
私有只读ObservableCollection_rawMDP=新ObservableCollection();
公共可观测收集RawMDP
{
获取{return\u rawMDP;}
}
}

通过指定自定义标记模板,可以使标记的可见性取决于相关数据。如果在序列的MarkerTemplate属性上设置DataTemplate,则可以通过数据上下文中的“项”引用基础项上的值。例如,如果要将椭圆的可见性绑定到基础数据项的可见性属性,它可能如下所示:

可见性=“{Binding Item.Visibility}”

如果数据项上有一个名为Visibility of type Visibility的属性

至于让线在点之间改变颜色,线系列是专门设计的,不会做这样的事情,因为如果你想要一条也有几百万点的多色线,它可能会产生可怕的后果

但是,如果您只想做一些简单的事情,例如,将线的任何部分浸入某个点以下的部分涂成红色,那么我的建议是将该部分数据拆分为一个单独的系列,并将“UnknownValuePlotting”设置为“DontPlot”。然后,如果您有任何高于阈值的值报告为null或NaN,那么当值超过该值时,您的行将具有不连续性,因此仅显示目标值下的行部分。通过这种方式,您可以将一条线拆分为要显示的不同颜色

这里需要注意的是,如果您想要拥有20万条不同颜色的线段,可能会遇到性能限制


另一个选项是实现自定义系列(继承自系列),允许每个线段具有不同的颜色。

谢谢您的回复。我在前面认识到MarkerType是基于系列而不是基于数据点的。我将使用DataTemplete,使用您提供的示例应该不难。您是否有或知道创建自己的自定义系列的示例。再次感谢!!!