Свойство зависимости коллекции не работает - PullRequest
1 голос
/ 03 августа 2011

У меня есть пользовательский элемент управления WPF, представляющий круговой датчик с некоторыми свойствами в нем. Когда я непосредственно использую его в своем приложении, все работает просто отлично, но когда я загружаю его в Expression Blend, чтобы проверить его свойства и симулировать ожидаемую анимацию, она работает, ожидая свойства зависимости коллекции. Проблема в том, что я использую Expression Blend для добавления какого-либо элемента в свойство коллекции. «SetValue» не вызывается! Что я делаю не так?

    public static readonly DependencyProperty RangesProperty =
        DependencyProperty.Register("Ranges ", typeof(CircularRangeInfoList), typeof(UserControl1), new FrameworkPropertyMetadata(new CircularRangeInfoList()));

    [Category("Test Collection")]
    public CircularRangeInfoList Ranges
    {
        get { return (CircularRangeInfoList)GetValue(RangesProperty); }
        set { SetValue(RangesProperty, value); }
    }
public class CircularRangeInfoList : ObservableCollection<CircularRangeInfo>
{
    public CircularRangeInfoList()
    {
    }
}

Ответы [ 2 ]

1 голос
/ 03 августа 2011

Это потому, что вы не устанавливаете свойство, вы изменяете коллекцию (для которой свойство уже установлено). Если вам нужно следить за изменениями в коллекции, вам следует добавить обработчик для события CollectionChanged.

См. вопрос для получения дополнительной информации.

0 голосов
/ 03 августа 2011

Когда вы регистрируете свойство зависимости, указывает статическое свойство измененного обратного вызова . Это будет вызвано, когда ваше свойство зависимости будет изменено. В этом делегате обратного вызова вы должны прикрепить обработчик события к событию CollectionChanged вашей пользовательской коллекции.

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