C# Silverlight 3图表用户控件,需要更改/设置图例标题

C# Silverlight 3图表用户控件,需要更改/设置图例标题,c#,silverlight,data-binding,xaml,charts,C#,Silverlight,Data Binding,Xaml,Charts,我在用户控件中有一个图表。由于我想在应用程序中使用多个图表,我需要为用户控件的每个实例设置一个系列的标题。到目前为止,它工作正常,但我无法将变量(例如seriesttle)绑定到用户控件xaml中的目标 请参阅以下代码: 使用MainPage.xaml中的用户控件,如下所示: <local:ColumnInputChart Name="Chart1" seriesTitle="Diuretics" seriesItemId="1" getServiceUrl="/Ser

我在用户控件中有一个图表。由于我想在应用程序中使用多个图表,我需要为用户控件的每个实例设置一个系列的标题。到目前为止,它工作正常,但我无法将变量(例如seriesttle)绑定到用户控件xaml中的目标

请参阅以下代码:

使用MainPage.xaml中的用户控件,如下所示:

<local:ColumnInputChart 
  Name="Chart1" 
  seriesTitle="Diuretics"
  seriesItemId="1"
  getServiceUrl="/Service/MedIntake/1"
  postServiceUrl="/Service/MedIntake/"
  />
在ColumnInputChart.xaml中,我试图将SerieStle绑定到一个系列的标题,但这不起作用。图例的标题为空。我需要以编程方式设置标题吗

<chartingToolkit:AreaSeries ItemsSource="{Binding}" 
   DependentValuePath="Dpd"
   IndependentValuePath="Date" 
   Title="{Binding seriesTitle, Mode=TwoWay}" />
这是我的用户控件的图表代码:

    <chartingToolkit:Chart Height="160" x:Name="Chart" BorderThickness="0" Style="{StaticResource MyChartStyle}">
        <chartingToolkit:Chart.Axes>
            <chartingToolkit:DateTimeAxis Orientation="X">
                <chartingToolkit:DateTimeAxis.AxisLabelStyle>
                    <Style TargetType="chartingToolkit:DateTimeAxisLabel">
                        <Setter Property="StringFormat" Value="{}{0:d/M/yyyy}"/>
                    </Style>
                </chartingToolkit:DateTimeAxis.AxisLabelStyle>
            </chartingToolkit:DateTimeAxis>
            <chartingToolkit:LinearAxis Orientation="Y" Location="Left" Title="Intake per day" ShowGridLines="True" />
        </chartingToolkit:Chart.Axes>
        <chartingToolkit:AreaSeries x:Name="MySeries2" ItemsSource="{Binding}" 
            DependentValuePath="Dpd"
            IndependentValuePath="Date" Title="{Binding seriesTitle, Mode=TwoWay}" />
        <chartingToolkit:ColumnSeries ItemsSource="{Binding}"
           DependentValuePath="Dpd"
           IndependentValuePath="Date" 
           IsSelectionEnabled="True" 
           Title="Missing Values"
           SelectionChanged="ColumnSeries_SelectionChanged" />
    </chartingToolkit:Chart>

我使用ObservableCollections作为图表的ItemSource

        medIntakes = new ObservableCollection<MedIntakeObj>();
        medIntakeBars = new ObservableCollection<MedIntakeObj>();

        ((AreaSeries)Chart.Series[0]).ItemsSource = medIntakes;
        ((ColumnSeries)Chart.Series[1]).ItemsSource = medIntakeBars;
medIntakes=新的ObservableCollection();
medIntakeBars=新的ObservableCollection();
((AreaSeries)图表系列[0])。项目来源=medIntakes;
((ColumnSSeries)Chart.Series[1])。ItemsSource=medIntakeBars;
谢谢你的帮助

这对我有用;-)

但我仍在寻找更好的解决方案

void Page_Loaded(object sender, RoutedEventArgs e) {

    // seriesItemId, seriesTitle ... have now the 
    // value form MainPage.xaml

    ((AreaSeries)Chart.Series[0]).Title = seriesTitle;
}

安东尼的评论对我帮助很大。 我为我的UserControl创建了一个ViewModel

public class ChartViewModel
{
    public String seriesTitle { get; set; }
    public String axisTitle { get; set; }

    public int seriesId { get; set; }
    public String serviceUrl { get; set; }

    public String comboText { get; set; }
    public List<String> comboList { get; set; }
UserControl的xaml现在有点不同了,绑定可以工作了

        < ... />
        <chartingToolkit:LinearAxis Orientation="Y" Location="Left" Title="{Binding axisTitle}" 
                                    ShowGridLines="True" Interval="1" />
    </chartingToolkit:Chart.Axes>
    <chartingToolkit:AreaSeries ItemsSource="{Binding values}" 
        DependentValuePath="Dpd"
        IndependentValuePath="Date"
        Title="{Binding seriesTitle}" />
    <chartingToolkit:ColumnSeries ItemsSource="{Binding bars}"
       DependentValuePath="Dpd"
       IndependentValuePath="Date" 
       IsSelectionEnabled="True" 
       Title="Missing Values"
       SelectionChanged="ColumnSeries_SelectionChanged" />
</chartingToolkit:Chart>
<…/>

现在,我想知道将可观测集合集成到ViewModel中是否是一个好的设计决策。我可以为它们分配ItemSource,它们与UserControl非常相关,所以我想将它们保留在UserControl中是一个不错的选择。请随意评论。

您安装了哪个版本的工具包。Title属性not binding是一个在以后的版本(我想是09年10月)中修复的错误。您将什么指定为图表的DataContext?据我所知,我已经安装了工具包的最新版本。现在是2009年11月。我正在图表中使用两个数据系列。两者都绑定到一个可观察的集合。使用JSON get请求从ASP.NETMVC后端检索内容,使用普通帖子将更改发回后端。。。很好。我将发布一些代码。因此,如果我理解正确,您没有为
DataContext
属性分配任何内容,因此绑定不起作用也就不足为奇了。但您真的不应该满足于此。这肯定不是很优雅。。。还有更好的主意吗?
public class ChartViewModel
{
    public String seriesTitle { get; set; }
    public String axisTitle { get; set; }

    public int seriesId { get; set; }
    public String serviceUrl { get; set; }

    public String comboText { get; set; }
    public List<String> comboList { get; set; }
public ColumnInputChart(ChartViewModel vm, SimpleCallback cb)
{
    InitializeComponent();

    this.vm = vm;
    this.cbStartScroll = cb;
    this.Chart.DataContext = vm;
        < ... />
        <chartingToolkit:LinearAxis Orientation="Y" Location="Left" Title="{Binding axisTitle}" 
                                    ShowGridLines="True" Interval="1" />
    </chartingToolkit:Chart.Axes>
    <chartingToolkit:AreaSeries ItemsSource="{Binding values}" 
        DependentValuePath="Dpd"
        IndependentValuePath="Date"
        Title="{Binding seriesTitle}" />
    <chartingToolkit:ColumnSeries ItemsSource="{Binding bars}"
       DependentValuePath="Dpd"
       IndependentValuePath="Date" 
       IsSelectionEnabled="True" 
       Title="Missing Values"
       SelectionChanged="ColumnSeries_SelectionChanged" />
</chartingToolkit:Chart>