首先,我对 C# 和 xaml 还很陌生。
我看过、检查过关于绑定(bind)的教程,但我看到的大部分内容都是在 xaml 中创建一个对象。但是我想在代码中创建对象,然后绑定(bind)到它的属性。此外,稍后我将在代码中定义几个对象。一般来说,我想绑定(bind)到文本框。
通常我的代码看起来像这样:
主窗口.xaml.cs
public partial class MainWindow : Window
{
MyTestObject myTestObject;
public MainWindow()
{
myTestObject= new MyTestObject ();
this.DataContext = this;
InitializeComponent();
}
}
MyTestObject.cs
class MyTestObject : INotifyPropertyChanged
{
public MyTestObject ()
{
}
private string testString = "Test";
public string TestString
{
get { return testString; }
set
{
if (value == testString) return;
testString = value;
this.OnPropertyChanged("TestString");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
this.PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
最终我会有相当多的(数字)属性,它们将显示在几个文本框中,因为该软件旨在作为发送测量数据的外部硬件组件的接口(interface)。我尝试了几种绑定(bind)方式,但我还没有成功。我将非常感激如何将前面提到的属性绑定(bind)到 TextBox
的示例。
最佳答案
将 Datacontext 设置为 myTestObject。或者,为 myTestObject 创建一个公共(public)属性并将 Xaml 绑定(bind)设置为 {Binding MyTestObjectPropertyHere.TestString}
例如:
public partial class MainWindow : Window
{
MyTestObject myTestObject;
public MainWindow()
{
myTestObject = new MyTestObject ();
this.DataContext = myTestObject;
InitializeComponent();
}
}
Xaml
<TextBox Text="{Binding Path=TestString}" />
绑定(bind)到 MainWindow 作为数据上下文的示例:
public partial class MainWindow : Window
{
MyTestObject myTestObject;
public MyTestObject MyTestObjectProperty { get { return myTestObject; } }
public MainWindow()
{
myTestObject = new MyTestObject ();
this.DataContext = this;
InitializeComponent();
}
}
Xaml
<TextBox Text="{Binding Path=MyTestObjectProperty.TestString}" />
关于c# - wpf xaml 绑定(bind)到在代码隐藏中创建的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19981966/