|
<chart:SfChart>
<chart:SfChart.Behaviors>
<chart:ChartZoomPanBehavior />
</chart:SfChart.Behaviors>
<chart:SfChart.RowDefinitions>
<chart:ChartRowDefinition/>
<chart:ChartRowDefinition/>
</chart:SfChart.RowDefinitions>
<chart:SfChart.PrimaryAxis>
<chart:NumericalAxis/>
</chart:SfChart.PrimaryAxis>
<!--Constituting axis for the first half series.-->
<chart:SfChart.SecondaryAxis>
<chart:NumericalAxis IsInversed="True" Minimum="0"/>
</chart:SfChart.SecondaryAxis>
<chart:ColumnSeries XBindingPath="XValue"
YBindingPath="SellVolume"
ItemsSource="{Binding Data}"
Label="Sell Volume">
</chart:ColumnSeries>
<!--Constituting axis for the second half series.-->
<chart:ColumnSeries XBindingPath="XValue"
YBindingPath="BuyVolumne"
ItemsSource="{Binding Data}"
Label="Buy Volume">
<chart:ColumnSeries.YAxis>
<chart:NumericalAxis chart:ChartBase.Row="1" Minimum="0"/>
</chart:ColumnSeries.YAxis>
</chart:ColumnSeries>
</chart:SfChart>
|
|
<chart:SfChart.SecondaryAxis>
<chart:NumericalAxis Maximum="{Binding Maximum}" IsInversed="True" Minimum="0"/>
</chart:SfChart.SecondaryAxis>
..
<chart:ColumnSeries.YAxis>
<chart:NumericalAxis Maximum="{Binding Maximum}" chart:ChartBase.Row="1" Minimum="0"/>
</chart:ColumnSeries.YAxis>
</chart:ColumnSeries> |
|
public ViewModel()
{
Data = new ObservableCollection<Model>();
Data.Add(new Model() { XValue = 0, BuyVolume = 110, SellVolume = 40});
Data.Add(new Model() { XValue = 1, BuyVolume = 140, SellVolume= 60 });
Data.Add(new Model() { XValue = 2, BuyVolume = 130, SellVolume = 50 });
Data.Add(new Model() { XValue = 3, BuyVolume = 110 , SellVolume = 30 });
Data.Add(new Model() { XValue = 4, BuyVolume = 100 , SellVolume = 25});
var buyMax = Data.Max(model => model.BuyVolume);
var sellMax = Data.Max(model => model.SellVolume);
Maximum = Math.Max(buyMax, sellMax);
}
public double Maximum { get; set; } |
|
<chart:ColumnSeries XBindingPath="XValue"
YBindingPath="SellVolume"
Interior="Red" |
|
<chart:SfChart.RowDefinitions>
<chart:ChartRowDefinition x:Name="row1" Unit="Star"/>
<chart:ChartRowDefinition x:Name="row2" Unit="Star"/>
</chart:SfChart.RowDefinitions>
<chart:SfChart.DataContext>
<local:ViewModel x:Name="viewModel"/>
</chart:SfChart.DataContext> |
|
public MainWindow()
{
InitializeComponent();
row1.Height = viewModel.RowHeight1;
row2.Height = viewModel.RowHeight2;
}
public class ViewModel
{
public ViewModel()
{
Data = new ObservableCollection<Model>();
Data.Add(new Model() { XValue = 0, BuyVolumne = 110, SellVolume = 40});
Data.Add(new Model() { XValue = 1, BuyVolumne = 140, SellVolume= 60 });
Data.Add(new Model() { XValue = 2, BuyVolumne = 130, SellVolume = 50 });
Data.Add(new Model() { XValue = 3, BuyVolumne = 110 , SellVolume = 30 });
Data.Add(new Model() { XValue = 4, BuyVolumne = 100 , SellVolume = 25});
double buyMax = Data.Max(data => data.BuyVolumne);
double sellMax = Data.Max(data => data.SellVolume);
double total = buyMax + sellMax;
RowHeight1 = (sellMax / total) * 100;
RowHeight2 = (buyMax / total) * 100;
}
public ObservableCollection<Model> Data { get; set; }
public double RowHeight1 { get; set; }
public double RowHeight2 { get; set; }
} |