2017-07-14 38 views
0

我有一個CheckBox,我想控制一個表格中所有TextBoxesEnabled屬性。我想這樣做,使用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); 
+0

你可以把你的文本框到列表,然後在循環 –

+0

這是不是一個壞主意綁定。但是,有沒有辦法使用相同的綁定多次?畢竟它是我想讓他們使用的完全相同的綁定? – Noceo

+0

我建議你使用WPF –

回答

4

爲什麼不創建一個新的綁定? :

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")); 

或者在一個更好的方法:

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"))); 
+0

這似乎是最好的解決方案。它在我的實際代碼中看起來稍微不太優雅,因爲這裏的名字更長一點:-)。 – Noceo