2010-09-02 38 views
2

我有两个文本框,我想在运行时的可视性财产之间的绑定,绑定程序,当我在运行时添加控件不起作用

结合的作品,当我通过XAML中添加文本框,但当我以编程方式添加它们时不起作用,

任何帮助!

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

在此先感谢

回答

5

修订

而不是设置ElementName属性,只需设置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); 
} 
+0

谢谢,我试过了,结果相同 – Homam 2010-09-02 13:55:15

+1

@Homam,这里你现在就去做这个工作。 – Gabe 2010-09-02 14:03:36

相关问题