У меня есть диаграмма в пользовательском элементе управления. Поскольку я хочу использовать несколько диаграмм в приложении, мне нужно установить такие вещи, как заголовок серии, для каждого экземпляра пользовательского элемента управления. Пока это работает нормально, но я не могу привязать переменную (например, 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 я пытаюсь связать сериюTitle с заголовком серии, но это не работает. Легенда имеет пустой заголовок. Нужно ли устанавливать заголовок программно?
<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;
Спасибо за любую помощь!
DataContext
, поэтому неудивительно, что ваша привязка не работает. - person AnthonyWJones   schedule 06.03.2010