WPF - получение значения свойства из пути привязки

, если у меня есть объект скажет MyObject, который имеет свойство MyChild, которое само имеет свойство Name Как я могу получить значение этого свойства Name, если все, что у меня есть, это путь привязки (то есть «MyChild.Name») и ссылка на MyObject?

MyObject
  -MyChild
    -Name
14
задан devdigital 26 August 2010 в 17:35
поделиться

2 ответа

Я нашел способ сделать это, но он довольно уродлив и, вероятно, не очень быстр... По сути, идея состоит в том, чтобы создать привязку с заданным путем и применить ее к свойству объекта зависимости. Таким образом, привязка выполняет всю работу по получению значения:

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));
    }
}
21
ответ дан 1 December 2019 в 12:11
поделиться

не знаю, что вы хотите сделать, но и как (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>
0
ответ дан 1 December 2019 в 12:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: