Свойства 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();
}