TrackBar
私はあなたが何をしたいのか理解してButton
いるので、デモンストレーションのためにあなたの状況を少し変更しましEnabled
たbutton
.式trackBar.Value > 50
。
アイデアは、メイン フォームを (MVVM のように) ViewModel のようなものに変換することです。を実装していることに注意してINotifyPropertyChanged
ください。
public partial class ManiacalBindingForm : Form, INotifyPropertyChanged {
public ManiacalBindingForm() {
InitializeComponent();
this.button.DataBindings.Add("Enabled", this, "ManiacalThreshold", true, DataSourceUpdateMode.OnPropertyChanged);
this.trackBar.ValueChanged += (s, e) => {
this.Text = string.Format("ManiacalBindingForm: {0}", this.trackBar.Value);
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("ManiacalThreshold"));
};
}
public bool ManiacalThreshold {
get { return this.trackBar.Value > 50; }
}
public event PropertyChangedEventHandler PropertyChanged;
...
}
さて、これは私の個人的な観察です。あなたの目標には自明ではない解釈がありますが、あなたの目標は少しマニアックです。なぜデータバインディングによってこれを達成したいのかを考える必要があります。バインディングは主に、プロパティ値の自動双方向同期を目的としています。「モデル」に直接バインドしてこの種の UI 更新を行うのは、さらにマニアックです。しかし、マニアックであることは称賛に値します。;-)