Проблема с инициализацией User Control в WPF с параметрами
Имеется очень простой User Control:
public partial class TestControl : UserControl {
public static readonly DependencyProperty ArgumentXProperty = DependencyProperty.Register("ArgumentX", typeof(int), typeof(TestControl));
public static readonly DependencyProperty ArgumentYProperty = DependencyProperty.Register("ArgumentY", typeof(int), typeof(TestControl));
private int result;
public TestControl() {
InitializeComponent();
DataContext = this;
result = ArgumentX + ArgumentY;
}
public int ArgumentX {
get => (int)GetValue(ArgumentXProperty);
set => SetValue(ArgumentXProperty, value);
}
public int ArgumentY {
get => (int)GetValue(ArgumentYProperty);
set => SetValue(ArgumentYProperty, value);
}
}
В конструкторе мне необходимо работать с данными, которые передаются таким образом (представим, что где-то в другом XAML мне необходимо добавить данный элемент):
<TestControl ArgumentX="5" ArgumentY="10"/>
Проблема заключается в том, что в этом самом конструкторе свойства не инициализируются с помощью тех аргументов, которые я передал в XAML. И если оставить код таким, какой есть сейчас, то "result" будет равен 0, а не 15. Но, после "отработки" конструктора значения в свойствах соответствуют тем, что я передал при инициализации.
Ответы (1 шт):
Автор решения: ToxyGen
→ Ссылка
Попробуйте следующим способом:
Loaded += (sender, args) =>
{
result = ArgumentX + ArgumentY;
};