ユーザー操作機能 > 範囲セレクタ |
FinancialChart の RangeSelector を使用すると、ユーザーが特定の範囲のデータを選択してチャートに表示できます。さまざまなタイプの株価チャートに簡単に RangeSelector を連結できます。これは主に金融業界で、さまざまなデータ範囲に対して株価の分析を実行するために使用されています。
RangeSelector には左スクロールボックス(最小値用)と右スクロールボックス(最大値用)があり、チャートの特定の時間をスクロールできます。ユーザーは RangeSelector の最小値と最大値を変更し、これらのスクロールボックスを左側や右側にドラッグして、チャート内でのデータの表示範囲を調整できます。範囲バーでスクロールボックスを左にドラッグすると値が減少し、右にドラッグする範囲バーの値が増加します。
次のコードスニペットは、アプリケーションで RangeSelector を使用する方法を具体的に示します。
public class DataService { List<Company> _companies = new List<Company>(); Dictionary<string, List<Quote>> _cache = new Dictionary<string, List<Quote>>(); private DataService() { _companies.Add(new Company() { Symbol = "box", Name = "Box Inc" }); _companies.Add(new Company() { Symbol = "fb", Name = "Facebook" }); } public List<Company> GetCompanies() { return _companies; } public List<Quote> GetSymbolData(string symbol) { if (!_cache.Keys.Contains(symbol)) { string path = string.Format("FinancialChartExplorer.Resources.{0}.json", symbol); Assembly asm = this.GetType().GetTypeInfo().Assembly; var stream = asm.GetManifestResourceStream(path); var ser = new DataContractJsonSerializer(typeof(Quote[])); var data = (Quote[])ser.ReadObject(stream); var dataList = data.ToList(); if (IsWindowsPhoneDevice()) { dataList = dataList.Take(20).ToList(); } _cache.Add(symbol, dataList); } return _cache[symbol]; } bool IsWindowsPhoneDevice() { if (Windows.Foundation.Metadata.ApiInformation. IsTypePresent("Windows.Phone.UI.Input.HardwareButtons")) { return true; } return false; } static DataService _ds; public static DataService GetService() { if (_ds == null) _ds = new DataService(); return _ds; } } public class Quote { public string date { get; set; } public double high { get; set; } public double low { get; set; } public double open { get; set; } public double close { get; set; } public double volume { get; set; } } public class Company { public string Symbol { get; set; } public string Name { get; set; } }
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition x:Name="row" Height="100" /> </Grid.RowDefinitions> <Chart:C1FinancialChart x:Name="candlestickChart" BindingX="date" Binding="high,low,open,close,volume" ChartType="Candlestick" ItemsSource="{Binding Data}"> <Chart:FinancialSeries /> </Chart:C1FinancialChart> <Chart:C1FinancialChart x:Name="financialChart" BindingX="date" Binding="close" ChartType="Line" ToolTip="{x:Null}" Grid.Row="1" ItemsSource="{Binding Data}"> <Chart:FinancialSeries /> </Chart:C1FinancialChart> <Extension:RangeSelector x:Name="rangeSelector" Grid.Row="1" ParentChart="{Binding ElementName=financialChart}" ValueChanged="OnRangeSelectorValueChanged" Margin="20 10 0 10" /> </Grid>
Visual Basic |
コードのコピー
|
---|---|
Partial Public Class RangeSelector
Inherits Page
Private dataService As DataService = dataService.GetService()
Public Sub New()
InitializeComponent()
End Sub
Public ReadOnly Property Data() As List(Of Quote)
Get
Return dataService.GetSymbolData("fb")
End Get
End Property
Sub OnRangeSelectorValueChanged(sender As Object, e As EventArgs)
candlestickChart.AxisX.Min = rangeSelector.LowerValue
candlestickChart.AxisX.Max = rangeSelector.UpperValue
End Sub
End Class
|
C# |
コードのコピー
|
---|---|
public partial class RangeSelector : Page { DataService dataService = DataService.GetService(); public RangeSelector() { InitializeComponent(); } public List<Quote> Data { get { return dataService.GetSymbolData("fb"); } } void OnRangeSelectorValueChanged(object sender, EventArgs e) { candlestickChart.AxisX.Min = rangeSelector.LowerValue; candlestickChart.AxisX.Max = rangeSelector.UpperValue; } } |