我明白你想要做什么,所以为了演示,我稍微修改了你的情况:UI设置很明显,有 aTrackBar
和 a Button
,这里的问题是将Enabled
属性绑定button
到布尔值表达trackBar.Value > 50
。
这个想法是将主要形式变成类似于 ViewModel 的东西(如在 MVVM 中)。观察我正在实施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 更新更加疯狂。但是,您因疯狂而受到赞誉!;-)