C# Silverlight 3图表用户控件,需要更改/设置图例标题
我在用户控件中有一个图表。由于我想在应用程序中使用多个图表,我需要为用户控件的每个实例设置一个系列的标题。到目前为止,它工作正常,但我无法将变量(例如seriesttle)绑定到用户控件xaml中的目标 请参阅以下代码: 使用MainPage.xaml中的用户控件,如下所示: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
<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>