繁体   English   中英

使用Caliburn.Micro将按钮动作绑定到Child ViewModel

[英]Binding a button action to a Child ViewModel with Caliburn.Micro

这应该很容易,但是对我不起作用。 我有一个名为MainWindowView的视图,其中包含一个名为ChildView的视图。 MainWindowView有一个对应的ViewModel称为MainWindowViewModel,ChildView有一个ViewModel称为ChildViewModel:

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);
    }
}

并且我可能会补充说,视图位于根级别的Views文件夹中,而视图模型位于根级别的ViewModels文件夹中。 为什么“编辑”命令不触发?

好吧,我要弯腰说,以我在CM方面的经验为依据,并说从您的展示中可以发现有约束力的错误。 应该发生什么? 请记住,并不是先使用WPF开箱即用地查看CM。 你能告诉我们你的引导者吗?

我可以通过将MainWindowView更改为来解决此问题

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

Caliburn.Micro无法以某种方式将ChildView正确绑定到其ViewModel。 我很困惑,因为正在调用ChildViewModel构造函数。 我猜Caliburn.Micro知道如何绑定ContentControl,但不知道我的自定义视图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM