2

私は、Silverlight 5 の規約を介して Caliburn.Micro のバインドを使用しており、気に入っています。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 を使用して規則を介してバインドできない理由を知っている人はいますか?

4

1 に答える 1

7

Caliburn.Micro には、WPF/SL/WP7 用の一連の既定の規則が付属していますが、既存のすべてのコントロール用ではないことは明らかであるため、Silverlightsdk:Labelも欠落しています。

この記事の最後に組み込みの規則と、規則がどのように機能するかについての多くの情報があります。

幸いなことに、次のコードを Bootstrapper のコンストラクターに追加するだけで、新しい規則を簡単に追加できます。

public MyBootstrapper()
{
    ConventionManager
        .AddElementConvention<Label>(Label.ContentProperty, 
                                    "Content", 
                                    "DataContextChanged");  
}
于 2012-08-28T19:06:09.513 に答える