Caliburn.Micro标签不按惯例约束

时间:2012-08-28 18:24:36

标签: c# .net silverlight mvvm caliburn.micro

我一直在使用Caliburn.Micro通过Silverlight 5中的约定进行绑定并且非常喜欢它。以下是ViewModel的示例属性:

private String _vmStringProp = "";
public String VmStringProp
{
    get
    {
        return _vmStringProp;
    }

    set
    {
        _vmStringProp = value;
        NotifyOfPropertyChange(() => VmStringProp);
    }
}

此属性仅通过命名绑定在视图中:

<TextBox x:Name="VmStringProp" />

这很有效。但是,如果我将其更改为TextBlock或Lable(下面的示例),则会抛出异常。

<sdk:Label x:Name="VmStringProp" />

如果您将其更改为像普通Silverlight一样绑定它可以正常工作,但我宁愿在整个项目中保持一致,而不是通过约定绑定某些绑定,而其他绑定取决于控件的类型。有谁知道为什么我不能通过约定与Labels和TextBlocks绑定?

1 个答案:

答案 0 :(得分:7)

Caliburn.Micro为WPF / SL / WP7提供了一组默认约定,但显然不适用于所有现有控件,因此Silverlight sdk:Label也缺失。

您可以在end of this article找到内置约定,以及有关约定如何工作的大量信息。

幸运的是,添加新的对话非常容易,只需将以下代码添加到Bootstrapper的构造函数中:

public MyBootstrapper()
{
    ConventionManager
        .AddElementConvention<Label>(Label.ContentProperty, 
                                    "Content", 
                                    "DataContextChanged");  
}