Значение по умолчанию для свойства "Параметры" не может быть привязано к определенному потоку.

Я обнаружил, что когда я меняю класс с

public class MarkdownEditorOptions : ObservableObject

to

public class MarkdownEditorOptions : INotifyPropertyChanged, DependencyObject

поскольку я хотел использовать свойства зависимости, я получаю сообщение об ошибке

Значение по умолчанию для свойства «Параметры» не может быть привязано к конкретному потоку. ... \ Views \ ShellView.xaml

Параметры объявлены как свойство зависимости на ShellViewModel

public MarkdownEditorOptions Options
{
    get { return (MarkdownEditorOptions)GetValue(OptionsProperty); }
    set { SetValue(OptionsProperty, value); }
}

public static readonly DependencyProperty OptionsProperty =
    DependencyProperty.Register("Options", typeof(MarkdownEditorOptions), typeof(ShellViewModel), new UIPropertyMetadata(new MarkdownEditorOptions()));

что случилось?


person Jiew Meng    schedule 18.11.2010    source источник


Ответы (1)


См. Эти вопросы

Ваше свойство Dependency не является потокобезопасным, что означает, что оно не наследуется от System.Windows.Freezable.
Измените DependencyObject на Freezable, и оно будет работать, поскольку Freezable является производным от DependencyObject.

person Fredrik Hedblad    schedule 18.11.2010
comment
Должен ли я тогда всегда использовать Freezable вместо DependencyObject? Или с этим связаны какие-то минусы? - person Jiew Meng; 19.11.2010
comment
Привет, я обнаружил, что это объект только для чтения, что, если мне нужно изменить в нем свойства зависимостей? - person Jiew Meng; 19.11.2010
comment
Для будущих читателей я пытался использовать значение по умолчанию для настройки начального экземпляра для привязки, и из-за проблемы, упомянутой в @JiewMeng, когда фреймворк вынуждает его быть только для чтения, не смог этого сделать. Вместо этого просто назначив начальное значение для свойства в конструкторе модели представления, я смог добиться того, чего хотел. - person chillNZ; 01.10.2018