sfreaky
@sfreaky
Начинающий веб и софт разработчик

Как настроить свойство зависимости в WPF?

Есть класс пользовательского компонента, содержащий свойство зависимости
public partial class FormulaEditor : UserControl
    {
        public static readonly DependencyProperty FormulaBindingProperty =
            DependencyProperty.Register("FormulaBinding", typeof(Formula), typeof(FormulaEditor));
        /// <summary>
        /// Свойство зависимости для привязки объекта формулы
        /// </summary>
        public Formula FormulaBinding
        {
            get
            {
                return GetValue(FormulaBindingProperty) as Formula;
                
            }
            set
            {
                SetValue(FormulaBindingProperty, value);
                ViewModel = new FormulaViewModel(value);
            }
        }
...
}

Есть ViewModel
public class WorkTypeViewModel : BaseViewModel<WorkTypeViewModel>
    {
        public int Id { get; set; }

        public string Name { get; set; }
        
        public Formula Formula { get; set; }
...
}

Есть окно, в котором используется привязка и ViewModel
<local:FormulaEditor Margin="0" Grid.Row="2" MinWidth="500" MinHeight="250" FormulaBinding="{Binding Path=Formula}"/>

Все остальные привязки через DataContext в этом окне работают, но в UserControl не вызывается даже методы get и set у свойства зависимости FormulaBinding. Нужно, чтобы когда в UserControl изменяется FormulaBinding, изменялся соответственно Formula во ViewModel
  • Вопрос задан
  • 101 просмотр
Пригласить эксперта
Ответы на вопрос 1
AlexanderYudakov
@AlexanderYudakov
C#, 1С, Android, TypeScript
WPF не использует сеттер свойства "FormulaBinding" и вызывает "SetValue()" напрямую.
Отследить изменения можно с помощью PropertyChangedCallback. Пример здесь:
https://msdn.microsoft.com/en-us/library/system.wi...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Payment Systems Москва
от 160 000 до 200 000 руб.
Spotware Systems Лимассол
от 3 500 до 4 000 eur.
Wallet One Чебоксары
от 90 000 до 150 000 руб.
18 авг. 2018, в 17:54
6000 руб./за проект
18 авг. 2018, в 16:00
60000 руб./за проект