Как привязать обратно к свойству зависимости - PullRequest
1 голос
/ 23 октября 2010

У меня есть пользовательский элемент управления, который предоставляет свойство DepenencyProperty (ImageData).

Я поместил этот пользовательский элемент управления на страницу и привязал его свойство ImageData к свойству ViewModel моей фотографии (фотография).

<localControls:PhotoPicker ImageData="{Binding Path=Photo, Mode=TwoWay}"/>

Когда пользователь взаимодействует с настройкой элемента управления свойством ImageData элемента управления, свойство Photo моей модели представления обновляется == Perfect. Однако если ViewModel изменяет значение Photo, свойство ImageData PhotoPicker не изменяется. Чего не хватает при получении данных из ViewModel обратно в пользовательский элемент управления?

UPDATE: При дальнейшем исследовании кажется, что установка из ViewModel обратно в элемент управления через привязку через свойство dependencyproperty не запускает установщик свойства оболочки свойства зависимостей. Что за беспорядок Мне нужно знать, когда это произойдет, если я не могу сделать это в установщике свойства оболочки, где я должен это сделать?

ОБНОВЛЕНИЕ 2: Похоже, что единственный способ узнать об изменениях в DependencyProperty - это добавить PropertyChangedCallback в PropertyMetadata при регистрации свойства.

1 Ответ

1 голос
/ 23 октября 2010

Похоже, ваша модель просмотра не отправляет уведомления об изменениях свойств?Очень упрощенная модель представления должна выглядеть примерно так:

public class MyViewModel : INotifyPropertyChanged
{
    private object photo;

    public object Photo
    {
        get { return this.photo; }
        set { this.photo = value; this.OnPropertyChanged("Photo"); }
    }

    // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...