用户控件渲染的工作原理如何?

时间:2014-11-06 15:53:17

标签: wpf

MainWindow.xaml我有一个userControl <control:IBDataGrid></control:IBDataGrid>;我让IBDataGrid来处理自己的逻辑。

public IBDataGrid()
{
    InitializeComponent();
    Ib = new IBQuoteSource();
    _vm = new WatchListViewModel(Ib);
    WatchList.DataContext = _vm;
    _vm.Subscribe();
}

现在问题是MainWindow在我调试或启动程序之前开始加载 IBDataGrid但是我希望它在我点击开始时无需调试。 [现在股票报价在运行程序之前开始更新]。 有没有办法解决这个问题,还是我需要重新设计逻辑? enter image description here

UPDATE1 使用Mike的答案确实在启动程序之前停止更新引号,但是在启动程序后,Quotes停止更新..

if (!DesignerProperties.GetIsInDesignMode(this))
{
    Ib = new IBQuoteSource();
    _vm = new WatchListViewModel(Ib);
    WatchList.DataContext = _vm;
    _vm.Subscribe();
}

1 个答案:

答案 0 :(得分:1)

最简单的解决方案可能是在设计器中运行时禁用订阅:

public IBDataGrid()
{
    InitializeComponent();
    Ib = new IBQuoteSource();
    _vm = new WatchListViewModel(Ib);
    WatchList.DataContext = _vm;

    if (!DesignerProperties.GetIsInDesignMode(this))
        _vm.Subscribe();
}