這應該很簡單,但它對我不起作用。我有一個名爲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文件夾。爲什麼編輯命令不會啓動?
那是我下一次去的地方。糾正它知道ContentControl,並且因爲contentcontrol可以通過在與ChildVM關聯的虛擬機中將名稱設置爲Variable來採取任何類型,CM知道將「View」放入該ContentControl中。先記住ViewModel,除非你想切換到View First,但它需要在頁面聲明中放置綁定。如果我沒有記錯的話, '。 –
mvermef
謝謝,幫助! – Will