[英]Binding programmatically doesn't work when I add the controls in run-time
I have two TextBoxes and I want to bind between their Visibility property in run time, 我有两个TextBox,我想在运行时绑定它们的Visibility属性,
The binding works when I add the TextBoxes by Xaml but doesn't work when I add them programmatically, 我通过Xaml添加TextBoxes时绑定工作,但是当我以编程方式添加它们时不起作用,
Any help !! 任何帮助!!
public partial class Window1 : Window
{
TextBox txt1 = new TextBox();
TextBox txt2 = new TextBox();
public Window1()
{
InitializeComponent();
txt1.Name = "txt1";
txt1.Margin= new Thickness(30,0,128,0);
txt1.VerticalAlignment = VerticalAlignment.Top;
txt2.Name = "txt2";
txt2.Margin = new Thickness(30, 32, 128, 0);
txt2.VerticalAlignment = VerticalAlignment.Top;
Binding binding = new Binding();
binding.ElementName = "txt1";
binding.Path = new PropertyPath(TextBox.VisibilityProperty);
BindingOperations.SetBinding(txt2, TextBox.VisibilityProperty, binding);
grid.Children.Add(txt1);
grid.Children.Add(txt2);
}
}
Thanks in advance 提前致谢
UPDATED 更新
Instead of setting the ElementName
property, just set the Source
property for the Binding
to the Element object you wish to bind to. 不要设置ElementName
属性,只需将Binding
的Source
属性设置为要Binding
到的Element对象。
TextBox txt1 = new TextBox();
TextBox txt2 = new TextBox();
public Window1()
{
InitializeComponent();
txt1.Name = "txt1";
txt1.Margin = new Thickness(30, 0, 128, 0);
txt1.VerticalAlignment = VerticalAlignment.Top;
txt1.Visibility = Visibility.Visible;
txt2.Name = "txt2";
txt2.Margin = new Thickness(30, 32, 128, 0);
txt2.VerticalAlignment = VerticalAlignment.Top;
Binding binding = new Binding();
binding.Source = txt1; // set the source object instead of ElementName
binding.Path = new PropertyPath(TextBox.VisibilityProperty);
BindingOperations.SetBinding(txt2, TextBox.VisibilityProperty, binding);
grid.Children.Add(txt1);
grid.Children.Add(txt2);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.