private void SetParameters(ref ControlMarket controlMarket, MarketViewModel marketViewModel)
 {
     controlMarket.DataContext = marketViewModel;
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="controlMarket"></param>
        /// <param name="marketViewModel"></param>
        // TODO: separate parameters and bindings to other methods. Or/and remove settings
        public void BindToViewModel(ref ControlMarket controlMarket, MarketViewModel marketViewModel)
        {
            //========================================================================= MARKET VIEWMODEL BINDINGS ================================================================

            //bind ControlStockInstance
            controlMarket.ControlStockInstance.DataContext = marketViewModel;
            controlMarket.ControlStockInstance.BindToSystem(/*(ITradeOperations)marketViewModel*,*/ _kernelTerminal, marketViewModel.TickerName, _kernelTerminal.TerminalConfig.MaxRepaintTimeMS);
            marketViewModel.ForceRepaintControlStock = controlMarket.ControlStockInstance.ForceRepaint;



            CStockProperties sp = marketViewModel.InstrumentConfig.MarketProperties.StockProperties;

            CDataBinder.BindFromList(marketViewModel, controlMarket.ControlStockInstance, sp);



            CDealsProperties dp = new CDealsProperties();

            CDataBinder.BindFromList(marketViewModel, controlMarket.ControlDealsInstance, dp);

            CClusterProperties cp = marketViewModel.InstrumentConfig.MarketProperties.ClusterProperties;

            CDataBinder.BindFromList(marketViewModel, controlMarket.ControlClustersInstance, cp);

            //=========================================================================END  MARKET VIEWMODEL BINDINGS ================================================================



            controlMarket.ControlUserPosInstance.DataContext = marketViewModel.VMUserPos;


            // CUtil.SetBinding(marketViewModel, "ActualWidth", (FrameworkElement)controlMarket.ControlStockInstance, FrameworkElement.ActualWidthProperty);

            //specific binding
            CUserPosProperties upp = new CUserPosProperties();

            //CDataBinder.BindFromList(marketViewModel.VMUserPos, controlMarket.ControlStockInstance.DOUSerPos, upp);
            CDataBinder.BindAllFromViewModel(marketViewModel.VMUserPos, controlMarket.ControlStockInstance.DOUSerPos);



            controlMarket.DataContext = marketViewModel;

            //========================================================================= BIND CONTROL MARKETS PROPERTIES =====================================================================
            //trick: on binding value of controlMarket.StockNum(correct) overrides with value
            //of MarketViewModel (incorrect) so remember old value and set it after binding
            int stockNum = controlMarket.StockNum;

            CUtil.SetBinding(marketViewModel, "StockNum", controlMarket, ControlMarket.StockNumProperty, twoWayBinding: true);
            marketViewModel.StockNum = stockNum;

            CUtil.SetBinding(marketViewModel, "SelectionMode", controlMarket, ControlMarket.SelectionModeProperty, twoWayBinding: true);
            CUtil.SetBinding(marketViewModel, "IsModeKeyboardTrading", controlMarket, ControlMarket.IsModeKeyboardTradingProperty);

            //=========================================================================END  BIND CONTROL MARKETS PROPERTIES =====================================================================


            //======================================================================== BIND CLUSTER PROCESSOR ===================================================================================
            CUtil.SetBinding(marketViewModel.ClusterProcessor, "ClusterPriceAmount", controlMarket.ControlClustersInstance, ControlClusters.ClusterPriceAmountProperty);
            CUtil.SetBinding(marketViewModel.ClusterProcessor, "DisablePaintClusters", controlMarket.ControlClustersInstance, ControlClusters.DisablePaintClustersProperty);
            CUtil.SetBinding(marketViewModel.ClusterProcessor, "DisableRecalcClusters", controlMarket.ControlClustersInstance, ControlClusters.DisableRecalcClustersProperty);
            CUtil.SetBinding(marketViewModel.ClusterProcessor, "LstTimes", controlMarket.ControlClustersInstance, ControlClusters.LstTimesProperty);
            CUtil.SetBinding(marketViewModel.ClusterProcessor, "ClusterDate", controlMarket.ControlClustersInstance, ControlClusters.ClusterDateProperty);
            //=========================================================================END BIND CLUSTER PROCESSOR  ==========================================================================================================



            // ========================================================================== TERMINAL VIEWMODEL BINDINGS ===========================================================
            CTerminalCommonProperties tcp = _kernelTerminal.TerminalConfig.TerminalProperties.TerminalCommonProperties;


            CDataBinder.BindFromList(_kernelTerminal.ViewModelDispatcher.TerminalViewModel, controlMarket, tcp);

            //TODO move line up
            TerminalViewModel termViewModel = _kernelTerminal.ViewModelDispatcher.TerminalViewModel;

            CDataBinder.BindFromList(termViewModel, controlMarket.ControlStockInstance, tcp);
            CDataBinder.BindFromList(termViewModel, controlMarket.ControlDealsInstance, tcp);
            CDataBinder.BindFromList(termViewModel, controlMarket.ControlClustersInstance, tcp);


            CTerminalStockProperties tsp = _kernelTerminal.TerminalConfig.TerminalProperties.TerminalStockProperties;

            CDataBinder.BindFromList(termViewModel, controlMarket.ControlStockInstance, tsp);

            CTerminalDealsProperties tdp = _kernelTerminal.TerminalConfig.TerminalProperties.TerminalDealsProperties;

            CDataBinder.BindFromList(termViewModel, controlMarket.ControlDealsInstance, tdp);


            CTerminalClustersProperties tclstp = _kernelTerminal.TerminalConfig.TerminalProperties.TerminalClustersProperties;

            CDataBinder.BindFromList(termViewModel, controlMarket.ControlClustersInstance, tclstp);



            //controlMarket.StockClock.DataContext = termViewModel;
            CUtil.SetBinding(termViewModel, "StockClock", controlMarket.StockClock, TextBlock.TextProperty);

            //controlMarket.StockClock.


            // ============ =============================================================END TERMINAL VIEWMODEL BINDINGS ===========================================================



            controlMarket.ControlClustersInstance.UpdateSettings();
            controlMarket.ControlClustersInstance.InitFontSizeScaled();
            //


            controlMarket.ControlDealsInstance.BindToSystem(_kernelTerminal /*, (ITradeOperations)marketViewModel*/);

            BindWorkAmount(controlMarket, marketViewModel);

            //     EvntDispMarketViewModel e = new EvntDispMarketViewModel(marketViewModel);
        }
 /// <summary>
 /// Deletes existing ControlMarcket and adds new ControlMarkets.
 /// Use for "connected" Instrument
 ///
 /// Calling from CKernelTerminal.EditConnectedStock
 /// </summary>
 public void ReplaceControlMarket(int stockNum, ref ControlMarket controlMarket, MarketViewModel marketViewModel)
 {
     DeleteControlMarket(stockNum);
     AddControlMarket(controlMarket, marketViewModel);
 }