Свойство Binding String для TextBox Text из кода сзади - PullRequest
0 голосов
/ 16 марта 2019

Извините за этот основной вопрос

У меня есть модель данных:

class data_test
    {
        public string textdata { get; set; }
        public bool booldata { get; set; }
        public bool checkdata { get; set; }
        public data_opt enumdata { get; set; }
    }

Вот Enum:

   enum data_opt
        {
            managed = 1,
            unmanaged = 2 ,
            mixed = 3
        }

Затем я создаю модель данных:

    var n_Data = new data_test()
    { textdata = "test data",
    booldata = false,
    checkdata = true ,
    enumdata = data_opt.mixed
    };

И я создаю текстовое поле из кода позади:

 var text_box = new TextBox();

Теперь я хочу привязать свойство text_box.Text к n_Data.textdata из кода

Таким же образом DataGrid работает, двустороннее соединение с обновлением в реальном времени.

Я нашел несколько страниц:

Свойство Binding String в TextBlock за кодом

Привязка данных WPF кстроковое свойство

Привязка строкового свойства к объекту

К сожалению, ни один из них не работает для меня, вот мой код для привязки:

Binding binding = new Binding();
binding.Path = new PropertyPath("textdata");
binding.Source = n_Data;
text_box.SetBinding(TextBlock.TextProperty, binding);

Также я попробовал это:

    Binding binding = new Binding();
    binding.Path = new PropertyPath("textdata");
    binding.Source = n_Data;
    BindingOperations.SetBinding(text_box, TextBlock.TextProperty, binding);

Они оба не работают, что я делаю не так?

1 Ответ

1 голос
/ 16 марта 2019

Поскольку ваша цель - TextBox, вы не можете использовать TextBlock.TextProperty в качестве свойства для привязки.Вам нужно использовать TextBox.TextProperty:

text_box.SetBinding(TextBox.TextProperty, binding);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...