设置OxyPlot图表标题

时间:2018-07-10 12:44:48

标签: c# wpf data-binding oxyplot

我正在使用OxyPlot在WPF / .net 4.5下显示基本的折线图,XAML的相关部分如下所示:

<oxy:Plot Title="{Binding Title}">
    <oxy:Plot.Series>
        <oxy:LineSeries ItemsSource="{Binding Points}"/>
        <oxy:LineSeries ItemsSource="{Binding Points2}"/>
    </oxy:Plot.Series>
    <oxy:Plot.Axes>
        <oxy:CategoryAxis Position="Bottom" ItemsSource="{Binding Labels}" />
    </oxy:Plot.Axes>
</oxy:Plot>

用于创建图表的代码是:

public class MainViewModel
{

    public MainViewModel()
    {
        this.Title = reader.title;
        this.Points = reader.mylist;
        this.Points2 = reader.mylist2;
        this.Labels = reader.labs;          
    }

    public string Title { get; private set; }
    public IList<DataPoint> Points { get; private set; }
    public IList<DataPoint> Points2 { get; private set; }
    public IList<String> Labels { get; private set; }

}

基本上可以像下面这样用另一种方法按需设置和更改属性:

public static List<DataPoint> mylist = new List<DataPoint>();
public static List<DataPoint> mylist2 = new List<DataPoint>();
public static List<String> labs = new List<String>();
public static string title;

public void setchart()
{

   mylist.Add(new DataPoint(0,5));
   mylist.Add(new DataPoint(1,10));

   mylist2.Add(new DataPoint(0,30));
   mylist2.Add(new DataPoint(1,25));

   labs.Add("date1");
   labs.Add("date2");

  title = "mytitle";

  MainWin.myPlot.InvalidatePlot(true);

}

它适用于图表中的线(点,Points2)和x轴上的标签(标签)。但是图表的标题不会更新-除非我这样说,否则“ mytitle”永远不会显示为图表的标题

this.Title = "mytitle";

直接进入MainViewModel()

有些人似乎也有类似的问题(例如here),但我想知道我做错了什么。

1 个答案:

答案 0 :(得分:1)

在MainViewModel构造器上,当您将读者列表分配给ILists时,两者都将指向同一对象,因此,当您修改一个对象时,另一个也将被修改。

另一方面,虽然

String是引用类型,但它是不可更改的,因此它的行为非常类似于值类型。因此,当您在阅读器类中修改字符串时,您并没有在ViewModel中进行修改。