Привязка программно не работает, когда я добавляю элементы управления во время выполнения - PullRequest
3 голосов
/ 02 сентября 2010

У меня есть два TextBox, и я хочу связать их свойство Visibility во время выполнения,

Привязка работает, когда я добавляю TextBoxes 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);
        }
    }

Заранее спасибо

1 Ответ

7 голосов
/ 02 сентября 2010

ОБНОВЛЕНО

Вместо установки свойства 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...