// 构造函数 public BarChart() { BarItems = new BarItemCollection(); FontSize = 0.1; Loaded += OnLoaded; }
//private void PositionUpdateCallback(object state) //{ // if (PositionUpdated) // { // PositionUpdated = false; // if (portfolioCB.SelectedValue != null) // { // ReloadDataCallback(); // } // } //} //private void OnPositionUpdated(PositionVM vm) //{ // PositionUpdated = true; //} private async void portfolioCB_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (portfolioCB.SelectedValue != null) { var portfolio = portfolioCB.SelectedValue?.ToString(); deltaRadioButton.IsChecked = true; marketRadioButton.IsChecked = true; var strategyVMCollection = _otcOptionHandler?.StrategyVMCollection; var strategyContractList = strategyVMCollection.Where(s => s.Portfolio == portfolio /*&& !string.IsNullOrEmpty(s.BaseContract)*/) .GroupBy(s => s.BaseContract).Select(c => new StrategyBaseVM { Contract = c.First().BaseContract, OptionContract = c.First().Contract }).ToList(); var strategyVMList = strategyVMCollection.Where(s => s.Portfolio == portfolio && !string.IsNullOrEmpty(s.BaseContract)).ToList(); foreach (var vm in strategyContractList) { var contractinfo = ClientDbContext.FindContract(vm.OptionContract); if (contractinfo != null) { vm.Expiration = contractinfo.ExpireDate; vm.MktVM = await _marketDataHandler.SubMarketDataAsync(vm.Contract); } var futurecontractinfo = ClientDbContext.FindContract(vm.Contract); if (futurecontractinfo != null) { vm.FutureExpiration = futurecontractinfo.ExpireDate; } } expirationLV.ItemsSource = strategyContractList; var baseContractSet = new SortedSet <string>(); foreach (var vm in strategyVMList) { if (vm.BaseContract != null) { baseContractSet.Add(vm.BaseContract); } } var baseContractList = baseContractSet.ToList(); baseContractAxis.ItemsSource = baseContractList; foreach (var vm in strategyVMList) { if (vm.BaseContract != null) { _riskDict[vm.BaseContract] = baseContractList.FindIndex(s => s == vm.BaseContract); } } // set x-axis using strikeList; lock (BarItemCollection) { BarItemCollection.Clear(); for (int i = 0; i < baseContractList.Count; i++) { BarItemCollection.Add(new ColumnItem { CategoryIndex = i, Value = 0 }); } } columnSeries.ItemsSource = BarItemCollection; ReloadDataCallback(); } }