私はC#とWPFの両方が初めてです。簡単なプログラムを書きました。0 から始まるCounter
読み取り専用プロパティと、単純にカウントを 1 ずつ増やす public メソッドを公開するというクラスがあります。実装します。Count
Increment
Counter
INotifyPropertyChanged
私は Window クラスを持っています (コードは以下にあります)。オブジェクトのインスタンスをコンストラクターに渡し、Counter
バインディングを実行します。ウィンドウにはボタンとラベルがあります。ラベルはカウンターのCount
プロパティにバインドされ、ボタンは を呼び出しますIncrement
。
これはすべて機能します。
ただし、ネットや MSDN で見たほとんどの例は、XAML でバインディングを定義することを主に扱っています。この例を変更して、バインド操作をコード ビハインドからマークアップに移動するにはどうすればよいですか? VS2010 の [プロパティ] ウィンドウの Binding プロパティは、私が望むことを行う方法を認識していないようです。おそらくそれは不可能ですか?
追加の質問: この例は MVVM には適合しないと思います... 私の Counter クラスは独立しており、そのプロパティ以外のどこにもビューに関連付けられていません。ただし、CounterWindow クラスはそれへの参照を保持しています。これは、この参照の適切な場所ですか? また、おそらくウィンドウを作成しCounterObject
てから、コンストラクターを介して渡す代わりに使用するプロパティ (例: ) を設定する必要があると思います。
public partial class CounterWindow : Window {
Counter ctr;
public CounterWindow(Counter ctr) {
InitializeComponent();
this.ctr = ctr;
Binding b = new Binding("Count");
b.Source = ctr;
CounterLabel.SetBinding(Label.ContentProperty, b);
}
private void IncrementButton_Click(object sender, RoutedEventArgs e) {
ctr.Increment();
}
}