, если у меня есть объект скажет MyObject, который имеет свойство MyChild, которое само имеет свойство Name Как я могу получить значение этого свойства Name, если все, что у меня есть, это путь привязки (то есть «MyChild.Name») и ссылка на MyObject?
MyObject
-MyChild
-Name
Я нашел способ сделать это, но он довольно уродлив и, вероятно, не очень быстр... По сути, идея состоит в том, чтобы создать привязку с заданным путем и применить ее к свойству объекта зависимости. Таким образом, привязка выполняет всю работу по получению значения:
public static class PropertyPathHelper
{
public static object GetValue(object obj, string propertyPath)
{
Binding binding = new Binding(propertyPath);
binding.Mode = BindingMode.OneTime;
binding.Source = obj;
BindingOperations.SetBinding(_dummy, Dummy.ValueProperty, binding);
return _dummy.GetValue(Dummy.ValueProperty);
}
private static readonly Dummy _dummy = new Dummy();
private class Dummy : DependencyObject
{
public static readonly DependencyProperty ValueProperty =
DependencyProperty.Register("Value", typeof(object), typeof(Dummy), new UIPropertyMetadata(null));
}
}
не знаю, что вы хотите сделать, но и как (xaml или код), но вы всегда можете назвать свой объект
<MyObject x:Name="myBindingObject" ... />
, а затем используйте его в коде
myBindingObject.Something.Name
или в xaml
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="myBindingObject"
Storyboard.TargetProperty="Background"
To="AA2343434" Duration="0:0:2" >
</DoubleAnimation>
</Storyboard>
</BeginStoryboard>