|
<local:SfChartExt.SeriesTemplate>
<DataTemplate>
<chart:ColumnSeries XBindingPath="Component" YBindingPath="Price" ItemsSource="{Binding PriceCollection}"
Label="{Binding Year}">
<chart:ColumnSeries.YAxis>
<chart:NumericalAxis Background="Blue"/>
</chart:ColumnSeries.YAxis>
</chart:ColumnSeries>
</DataTemplate>
</local:SfChartExt.SeriesTemplate>
|
|
<Grid.Resources>
<local:YAxisConverter x:Key="axisConverter"/>
</Grid.Resources>
<chart:ColumnSeries XBindingPath="Component" YBindingPath="Price"
ItemsSource="{Binding PriceCollection}" Label="{Binding Year}"
YAxis="{Binding ChannelType,Converter={StaticResource axisConverter}}">
</chart:ColumnSeries>
|
|
<Application.Resources>
<chart:NumericalAxis Background="Blue" x:Key="axis1"/>
<chart:NumericalAxis Background="Red" x:Key="axis2"/>
<chart:NumericalAxis Background="Yellow" x:Key="axis3"/>
<chart:NumericalAxis Background="Green" x:Key="axis4"/>
</Application.Resources>
|
|
public ViewModel()
{
AnnualPriceCollection = new ObservableCollection<AnnualPriceData>();
AnnualPriceCollection.Add(new AnnualPriceData()
{
Year = "2012",
ChannelType=ChannelType.Conductivity,
PriceCollection = new ObservableCollection<PriceData>()
{
new PriceData() {Component = "Hard Disk", Price = 80 },
new PriceData() {Component = "Scanner", Price = 140 },
new PriceData() {Component = "Monitor", Price = 150 },
new PriceData() {Component = "Printer", Price = 180 },
}
});
AnnualPriceCollection.Add(new AnnualPriceData()
{
Year = "2013",
ChannelType = ChannelType.Length,
PriceCollection = new ObservableCollection<PriceData>()
{
new PriceData() {Component = "Hard Disk", Price = 87 },
new PriceData() {Component = "Scanner", Price = 157 },
new PriceData() {Component = "Monitor", Price = 155 },
new PriceData() {Component = "Printer", Price = 192 },
}
});
}
public class YAxisConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value.ToString() == ChannelType.Conductivity.ToString())
return Application.Current.Resources["axis1"];
else if (value.ToString() == ChannelType.Length.ToString())
return Application.Current.Resources["axis2"];
else if (value.ToString() == ChannelType.Pressure.ToString())
return Application.Current.Resources["axis3"];
else
return Application.Current.Resources["axis4"];
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return value;
}
}
…
public enum ChannelType
{
Pressure,
Temperature,
Length,
Conductivity
}
|