Свойства wpf не установлены после initializecomponent

У меня есть проблема, касающаяся свойств, которые установлены в xaml.
Я создал пользовательский элемент управления со свойством зависимостей MidiChanel.
Я установил значение этого свойства на 10 в xaml. В конструкторе пользовательского элемента управления мне нужно это значение, чтобы добавить его в словарь и передать значение дочернему классу моего пользовательского элемента управления.

Проблема в том, что в конструкторе даже после вызова initializecomponents свойство stil имеет значение по умолчанию, а не значение, установленное в xaml. На самом деле, это не устанавливается вообще.

Если я изменю свойство MidiChanel на обычное свойство, значение будет установлено, но не инициализировать компоненты userControl, которые устанавливают значение, а инициализировать компоненты главного окна. Стек вызовов = Main.InitializeComponents, конструктор userControl (значения еще не доступны), устанавливается установщик MidiChanel. (кто?, стек вызовов говорит Main.InitializeComponents).

Я разработчик winforms и нахожу все это довольно странным. После Main.InitializeComponents я мог бы перебрать все пользовательские элементы управления на главной странице и делать все здесь, но это кажется странным.

Любые предложения здесь?

1 ответ

Вы можете установить метод обратного вызова, который будет вызываться при изменении зависимости вашего свойства

   public int SomeProp
    {
        get { return (int)GetValue(SomePropProperty); }
        set { SetValue(SomePropProperty, value); }
    }

    // Using a DependencyProperty as the backing store for SomeProp.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty SomePropProperty =
        DependencyProperty.Register("SomeProp", typeof(int), typeof(yourOwnerclass), new PropertyMetadata(new PropertyChangedCallback(OnSomePropertyChnaged)));

    public static void OnSomePropertyChnaged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        (d as yourOwnerclass).SomeFunction();
    }
Другие вопросы по тегам