2015-08-19 26 views
1

控件:TabControlView是一個可重用組件。我需要能夠創建一個ViewModel /爲每個組件使用檢索它的實例。Caliburn.Micro將已解析的ViewModel實例從父項分配給子項

<UserControl x:Class="App.Views.Shell.ShellView" ...> 
    <StackPanel Orientation="Vertical"> 

     <controls:TabControlView cal:Bind.Model="{Binding TabControlViewModel}"/> 

    </StackPanel> 
</UserControl> 

在ShellViewModel構造:

public TabControlViewModel TabControlViewModel { get; set; } 
public ShellViewModel(){ 
    TabControlViewModel = new TabControlViewModel();//For simplicity. It is resolved by IoC 
} 

當我把一個破發點到TabControlViewModel的構造函數中我可以看到,它被稱爲2倍。

當我設置IoC解析TabControlViewModel作爲單例時它工作(因爲解析TabControlViewModel的內部調用服務於同一個實例)。

我該如何編輯我的代碼,以便它不會自動調用BootstrapperBase.GetInstance(),或者如何替換View的ViewModel?

回答

1

我發現作爲視圖模型是由卡利解決它,然後自動注入到屬性:

public TabControlViewModel TabControlViewModel { get; set; } 

所有我需要做的是讓propfull和做手實例的設置有:

private TabControlViewModel _tabControlViewModel; 

public TabControlViewModel TabControlViewModel 
{ 
    get { return _tabControlViewModel; } 
    set 
    { 
     _tabControlViewModel = value; 
     //Init here 
     NotifyOfPropertyChange(() => TabControlViewModel); 
    } 
} 
相關問題