3

ビューに Save という名前のボタンがある場合、Save プロパティを ViewModel に追加すると、Caliburn.Micro が自動的にそれをボタンのコンテンツにバインドします。例えば:

public string Save { get { return StringResources.Save; } }

または、Save メソッドを ViewModel に追加することもできます。Caliburn.Micro は、ボタンがクリックされたときにそのメソッドを実行します。例えば:

public void Save() {
    Document.Save();
}

しかし、両方をやりたい場合はどうすればよいでしょうか。C# では、同じ名前のメソッドとプロパティを宣言できません。規則を使用して、ボタンのコンテンツとクリック時に実行するアクションの両方を設定できますか?

(どちらか一方を手動でバインドできることはわかっていますが、実用的であれば、慣例を使用したいと思います。)

これは一般的なニーズであるため、Caliburn.Micro に組み込まれていると思われますが、そうではないようです。これをサポートするために規約を拡張するいくつかのコードを見てきました (そして、これ以上良いものがなければ回答として投稿します)。この作業をよりきれいにしました。

注:この同様の質問を見たことがありますが、これが良い考えかどうかについてのようです。メカニックについて質問です。(いいアイデアかどうかは、メカを見てから判断します(笑))

4

1 に答える 1

7

速くて汚い

<Button x:Name="Save"><TextBlock x:Name="SaveText"></TextBlock></Button>
于 2012-04-18T08:09:52.860 に答える