2017-05-10 43 views
0

這應該很簡單,但它對我不起作用。我有一個名爲MainWindowView的視圖,其中包含一個名爲ChildView的視圖。所述MainWindowView具有相應的視圖模型稱爲MainWindowViewModel和ChildView具有視圖模型稱爲ChildViewModel:使用Caliburn.Micro將按鈕動作綁定到Child ViewModel

MainWindowView:

<Grid> 
    <views:ChildView x:Name="ChildView"/> 
</Grid> 

MainWindowViewModel:

public MainWindowViewModel() 
{ 
    ChildView = new ChildViewModel(); 
} 

ChildView:

<Grid> 
    <Button Content="Edit" x:Name="Edit"/> 
</Grid> 

ChildViewModel:

public class ChildViewModel 
{ 
    public void Edit() 
    { 

    } 

    public ChildViewModel() 
    { 

    } 

編輯:

AppBootstrapper:

public class AppBootstrapper : BootstrapperBase 
{ 
    private SimpleContainer container; 

    public AppBootstrapper() 
    { 
     Initialize(); 
    } 

    protected override void Configure() 
    { 
     container = new SimpleContainer(); 

     container.Instance(container); 

     container 
      .Singleton<IWindowManager, WindowManager>() 
      .Singleton<IEventAggregator, EventAggregator>(); 

     container.PerRequest<MainWindowViewModel>(); 
    } 

    protected override void OnStartup(object sender, StartupEventArgs e) 
    { 
     DisplayRootViewFor<MainWindowViewModel>(); 
    } 

    protected override object GetInstance(Type service, string key) 
    { 
     return container.GetInstance(service, key); 
    } 

    protected override IEnumerable<object> GetAllInstances(Type service) 
    { 
     return container.GetAllInstances(service); 
    } 

    protected override void BuildUp(object instance) 
    { 
     container.BuildUp(instance); 
    } 

    protected override void OnUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) 
    { 
     e.Handled = true; 
     MessageBox.Show(e.Exception.Message, "An error as occurred", MessageBoxButton.OK); 
    } 
} 

和我想補充一點意見是在根級文件夾視圖和視圖模型在一個根級別的ViewModels文件夾。爲什麼編輯命令不會啓動?

回答

0

我能夠通過改變MainWindowView解決這個問題,以

<Grid> 
    <ContentControl x:Name="ChildView" /> 
</Grid> 

不知怎的Caliburn.Micro無法在ChildView正確綁定到其視圖模型。我很困惑,因爲ChildViewModel構造函數被調用。我想Caliburn.Micro知道如何綁定ContentControl,但不是我的自定義視圖。

+0

那是我下一次去的地方。糾正它知道ContentControl,並且因爲contentcontrol可以通過在與ChildVM關聯的虛擬機中將名稱設置爲Variable來採取任何類型,CM知道將「View」放入該ContentControl中。先記住ViewModel,除非你想切換到View First,但它需要在頁面聲明中放置綁定。如果我沒有記錯的話,'。 – mvermef

+0

謝謝,幫助! – Will

0

好吧,我要去我們的肢體,並說我從CM的經驗,並說從你有一個顯示有可能是一個綁定錯誤。應該發生什麼?請記住,CM不是首先使用WPF查看的。你可以告訴我們你的引導程序嗎?

+0

增加了引導程序。我收到一個綁定錯誤,但對我來說沒有任何意義:'不能創建默認轉換器來執行'XNameTest.ViewModels.ChildViewModel'和'System.Windows.Visibility'類型之間的'雙向'轉換。' – Will

+0

它不會不明白(CM)如何轉換你的''的綁定,所以它會拋出綁定錯誤。 – mvermef

相關問題