Noc*_*ceo 1 c# data-binding winforms
我有一个CheckBox
我想以某种形式控制Enabled
所有属性的属性。TextBoxes
我想这样做,使用DataBinding
. 有没有一种方法可以创建一个DataBinding
可用于TextBox
表单中的每个内容的单个?
// Creating the binding for the checkbox
Binding bindDisableFormFields = new Binding("Checked", viewModel, "DisableFormFields");
// Create the binding for the textboxes
Binding bindIsFormEnabled = new Binding("Enabled", viewModel, "IsFormEnabled");
// Add the binding to the checkbox. This works as intended
myForm.DisableFormCheckBox.DataBindings.Add(bindDisableFormFields);
// Add bindings and textboxes. After adding the binding
// to the first textbox, the code will fail at runtime. So obviously
// this is not a useful approach.
myForm.TextBox1.DataBindings.Add(bindIsFormEnabled);
myForm.TextBox2.DataBindings.Add(bindIsFormEnabled); // This line will fail
myForm.TextBox3.DataBindings.Add(bindIsFormEnabled);
myForm.TextBox4.DataBindings.Add(bindIsFormEnabled);
myForm.TextBox5.DataBindings.Add(bindIsFormEnabled);
Run Code Online (Sandbox Code Playgroud)
为什么不分别创建一个新的绑定呢?:
myForm.TextBox1.DataBindings.Add(new Binding("Enabled", viewModel, "IsFormEnabled"));
myForm.TextBox2.DataBindings.Add(new Binding("Enabled", viewModel, "IsFormEnabled"));
myForm.TextBox3.DataBindings.Add(new Binding("Enabled", viewModel, "IsFormEnabled"));
myForm.TextBox4.DataBindings.Add(new Binding("Enabled", viewModel, "IsFormEnabled"));
myForm.TextBox5.DataBindings.Add(new Binding("Enabled", viewModel, "IsFormEnabled"));
Run Code Online (Sandbox Code Playgroud)
或者用更优雅的方法:
List<TextBox> textBoxes = new List<TextBox>() { myForm.TextBox1, myForm.TextBox2, myForm.TextBox3, myForm.TextBox4, myForm.TextBox5 };
textBoxes.ForEach(t => t.DataBindings.Add(new Binding("Enabled", viewModel, "IsFormEnabled")));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
438 次 |
最近记录: |