将字符串属性从代码背后绑定到TextBox文本

时间:2019-03-16 17:47:12

标签: c# wpf

很抱歉这个基本问题

我有一个数据模型:

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 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 Property in Code-Behind TextBlock

WPF Data Binding to a string property

Binding string property to object

不幸的是,它们都不对我有用,这是我要绑定的代码:

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 个答案:

答案 0 :(得分:1)

由于目标是TextBox,所以不能使用TextBlock.TextProperty作为要绑定的属性。您需要使用TextBox.TextProperty

text_box.SetBinding(TextBox.TextProperty, binding);