Silverlight.Привязка к прикрепленным свойствам объектов данных, геттер не введен - PullRequest
2 голосов
/ 02 декабря 2011

Я пытаюсь использовать вложенные свойства, чтобы добавить логику представления в мои объекты данных. Я собираюсь переключиться на обертки, но мне любопытно, почему следующее не работает для меня. Код класса логики представления:

    public static readonly DependencyProperty TestPropProperty = DependencyProperty.RegisterAttached(
       "TestProp",
       typeof(string),
       typeof(DataClassPresenter),
       new PropertyMetadata("[Test]")
       );

    public static string GetTestProp(DataClass el)
    {
        return "Haha"; // (string)el.GetValue(TestPropProperty);
    }

    public static void SetTestProp(DataClass el, string val)
    {
        el.SetValue(TestPropProperty, val);
    }

Мой XAML для привязки к значению свойства:

     <TextBlock Text="{Binding Path=(prz:DataClassPresenter.TestProp), StringFormat='Depend:\{0\}'}"/>

Это работает, но всегда отображает «[Test]», «Haha» никогда не возвращается и этот GetTestProp никогда не вводится. Что я делаю не так?

1 Ответ

3 голосов
/ 02 декабря 2011

Это потому, что ваш метод get не гарантированно будет вызван.Silverlight (и WPF) могут получить или установить значение свойства, используя только DependencyProperty.Вы никогда не должны вводить какую-либо логику в методы get или set.

Кроме того, вы не должны использовать DataClass в качестве параметра.Переданный объект будет элементом, для которого вы устанавливаете присоединенное свойство, которое в вашем примере является TextBlock.Таким образом, вы должны принять вышеприведенное DependencyObject или UIElement вместо DataClass.

...