我不确定这是否可行,但我想问一下。首先,为了我的目的,我需要它在C#部分工作,而不是XAML部分。这就是我拥有的并且它可以工作:
public partial class MyClass1 : Window
{
public MyClass2 MyClass2Object { get; set; }
public MyClass1()
{
InitializeComponent();
MyClass2Object = new MyClass2();
Binding binding = new Binding();
binding.Source = MyClass2Object;
binding.Path = new PropertyPath("StringVar");
TextBoxFromXaml.SetBinding(TextBox.TextProperty, binding);
}
}
public class MyClass2
{
public string StringVar { get; set; }
public MyClass2()
{
StringVar = "My String Here";
}
}
我希望这个能够精准地绑定到我的StringVar属性。但是,如果我在设置绑定源时有一个字面字符串"MyClass2Object.StringVar",我该怎么办呢?我意识到可以使用split函数从较长的字符串中分离出"MyClass2Object"和"StringVar"。然后,我只需要用split的第二个结果替换新的PropertyPath行。但是,如何根据split的第一个结果替换binding.Source行呢?如果这是可能的,我就可以传递一个类似"MyClass2Object.StringVar"的字符串,并使TextBox的Text属性绑定到该属性;或者如果我传递一个类似"AnotherClassObject.StringProperty"的字符串,就可以使TextBox的Text属性绑定到实例化变量名为AnotherClassObject的对象的StringProperty属性。我希望我表达清楚了。