I am unsure if this is even possible, but I thought I would ask. First off, for my purposes, I require this to work in the C# portion and not the XAML part. This is what I have and it works:
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'; } }
And this will bind to my StringVar property exactly how I would like it to. However, my question comes with what if I have the literal string ‘MyClass2Object.StringVar’ when setting the binding source. I realize I can use the split function to separate ‘MyClass2Object’ and ‘StringVar’ from the longer string. I can then just replace the new PropertyPath line with the the second result from the split. However, how would I replace the binding.Source line according to the first result from the split. If this is possible, I would be able to pass a string like ‘MyClass2Object.StringVar’ and have the TextBox’s Text property bind to that property or if I pass a string like ‘AnotherClassObject.StringProperty’ and have the TextBox’s Text property bind to the StringProperty property of the object instantiated in the variable with name AnotherClassObject. I hope I am making sense.
It sounds like you want the PropertyPath to be ‘Property.Property’ which will work, but for the binding to work it needs a source object for the first Property. The two options that I’m aware of are DataContext or a Source.
With your sample code the other alternative is: