【问题标题】:How to programmatically set chart series title in ModernUI WPF chart如何以编程方式在 ModernUI WPF 图表中设置图表系列标题
【发布时间】:2014-04-04 23:29:15
【问题描述】:

我需要使用 ModernUI WPF 图表以编程方式设置图表系列标题。

我按以下方式创建图表,以便轻松输入数据:

public class MainViewModel
{    
    public ObservableCollection<ChartData> Populations {get; set;}    
    public MainViewModel()
    {
        Populations = new ObservableCollection<ChartData>();         
    }

    public void Add(string key, int value)
    {
        Populations.Add(new ChartData() { dataName = key, dataValue = value });
    }
}

public class ChartData
{
    public string dataName { get; set; }
    public int dataValue  { get; set; }
}

然后在主窗口中:

public MainWindow()
{
    InitializeComponent();

    MainViewModel mvm = new MainViewModel();
    mvm.Add("asd", 123);
    mvm.Add("sdfs", 133);
    mvm.Add("asda", 129);
    mvm.Add("asgfgfhd", 23);

    test1.DataContext = mvm;
}

在 XAML 中:

    <chart:StackedColumnChart x:Name="test1" ChartSubTitle="Population in millions"
        ChartTitle="Countries by population" Margin="10,10,0,0" HorizontalAlignment="Left" Width="1573" Height="475" VerticalAlignment="Top">
        <chart:StackedColumnChart.Series>

            <chart:ChartSeries DisplayMember="dataName"
                ItemsSource="{Binding Populations}"
                *SeriesTitle="World largest populations"*
                ValueMember="dataValue" />
        </chart:StackedColumnChart.Series>      

    </chart:StackedColumnChart>

如何以编程方式设置 SeriesTitle 值?

【问题讨论】:

  • 您可以尝试为系列设置x:Name 属性并从代码中访问它。或使用test1.Series.First().SeriesTitle
  • test1.Series.First().SeriesTitle 完美运行,谢谢。如果您将其写为答案,我将很乐意接受。现在我想知道如何以编程方式添加系列......你能帮忙吗,或者我应该打开一个新主题。

标签: c# wpf xaml charts modern-ui


【解决方案1】:

为了以编程方式更改标题,您可以访问图表控件的属性并设置一些其他值:

var chartSeries = test1.Series.First();
chartSeries.SeriesTitle = "New title";

您还可以在 C# 代码中创建和添加系列:

var series = new ChartSeries();
series.ItemsSource = items; // a collection from somewhere else
series.DisplayMember = "dataName";
series.ValueMember = "dataValue";
series.SeriesTitle = "Title";

test1.Series.Add(series);

【讨论】:

  • 这太完美了,你是我的英雄 :) 我想知道其他人是否自己解决了这个问题,或者这也可以帮助其他人。非常感谢!!!
  • 最后一个问题,如果你不介意的话。如果我使用 LINQ 将项目限制为某个条件,我似乎无法将其分配给 DataContext。我可以看到它找到了项目,但图表是空的。你知道为什么吗? var modMvm = mvm.Populations.Where(x => x.dataName == "asd"); test1.DataContext = modMvm;
  • @Marton 您应该检查 XAML 标记中的绑定表达式。如果 DataContex 是一个集合,绑定应该是ItemsSource="{Binding}"
猜你喜欢
  • 2015-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多