かきスタンプ

福岡でフリーランスの物流系のエンジニアやってます。

C#(MVVM):ソースコードにてバインディング設定する方法

xamlでなく、ソースからバインド設定をするには、SetBinding メソッドを使用します。

(例)

Button myButton01 = new Button();
// Content に「MyString01」というプロパティとのバインディング設定を追加
myButton01.SetBinding(Button.ContentProperty, nameof(MyString01));
// Command に「SaveCommand」というリレーコマンドとのバインディング設定を追加
myButton01.SetBinding(Button.CommandProperty, nameof(SaveCommand));

//あとは適当に配置。

「MyString01」という stringを返すプロパティと、
「SaveCommand」というリレーコマンドが定義済みとしています。
 
 
上記のソースは、以下のような Xamlを記述した場合と同じ動きをします。

<Button
    Content="{Binding Path=MyString01}"
    Command="{Binding Path=SaveCommand}" 
    />

 
 
SetBinding の第二引数に、バインディングの対象にしたい”文字列”を設定します。
なので、上記のソースは、以下のように書くこともできます。

myButton01.SetBinding(Button.ContentProperty, "MyString01");
myButton01.SetBinding(Button.CommandProperty, "SaveCommand");

 
ただ、この書き方だと、リファクタリングに弱くなり、コードジャンプ機能も使えないので、nameof を使用した方がメンテナンス時の労力を軽減できます。