У меня есть диаграмма в пользовательском элементе управления. Поскольку я хочу использовать несколько диаграмм в приложении, мне нужно установить такие вещи, как заголовок серии для каждого экземпляра пользовательского элемента управления. Пока все работает нормально, но я не могу связать переменную (например, seriesTitle) с целью в пользовательских элементах управления xaml.
Пожалуйста, смотрите следующий код:
Использование пользовательского элемента управления в MainPage.xaml так:
<local:ColumnInputChart
Name="Chart1"
seriesTitle="Diuretics"
seriesItemId="1"
getServiceUrl="/Service/MedIntake/1"
postServiceUrl="/Service/MedIntake/"
/>
Где, например, seriesTitle - это публичная переменная в пользовательском элементе управления.
public partial class ColumnInputChart : UserControl
{
public String seriesItemId { get; set; }
public String getServiceUrl { get; set; }
public String postServiceUrl { get; set; }
public String seriesTitle { get; set; }
В ColumnInputChart.xaml я пытаюсь привязать заголовок серии к заголовку серии, который не работает. Легенда имеет пустой заголовок. Нужно ли устанавливать заголовок программно?
<chartingToolkit:AreaSeries ItemsSource="{Binding}"
DependentValuePath="Dpd"
IndependentValuePath="Date"
Title="{Binding seriesTitle, Mode=TwoWay}" />
Я также понял, что настраиваемые публичные переменные моего пользовательского элемента управления, которые установлены в MainPage.xaml, еще не установлены во время создания пользовательского элемента управления. Но они становятся доступны после запуска события Page_Loaded.
Пожалуйста, посмотрите код и комментарии в коде, чтобы уточнить, что я имею в виду:
public String seriesItemId { get; set; }
public String getServiceUrl { get; set; }
public String postServiceUrl { get; set; }
public String seriesTitle { get; set; }
public ColumnInputChart()
{
// seriesItemId and so on are null here.
InitializeComponent();
Loaded += new RoutedEventHandler(Page_Loaded);
// and null here.
}
void Page_Loaded(object sender, RoutedEventArgs e) {
// seriesItemId, seriesTitle ... have now the
// value form MainPage.xaml
}
Это код диаграммы моего пользовательского элемента управления:
<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;
Спасибо за любую помощь!