简体   繁体   English

当我在运行时添加控件时,以编程方式绑定不起作用

[英]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属性,只需将BindingSource属性设置为要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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM