>
>
>
V3044. WPF: writing and reading are per…


V3044. WPF: writing and reading are performed on a different Dependency Properties.

Анализатор обнаружил потенциальную ошибку в программе, связанную с регистрацией свойств зависимостей [Dependency Properties]. При регистрации свойств зависимостей было ошибочно задано свойство, через которое происходит запись/чтение свойств.

class A : DependencyObject
{
public static readonly DependencyProperty CurrentTimeProperty =
DependencyProperty.Register("CurrentTime", ....);
public static readonly DependencyProperty OtherProperty =
DependencyProperty.Register("Other", ....);

public DateTime CurrentTime {
  get { return (DateTime)GetValue(CurrentTimeProperty); }
  set { SetValue(OtherProperty, value); } }
}
....

Из-за копирования возникла следующая ситуация. В определении методов доступа get и set, свойства CurrentTime, используются соответственно методы GetValue и SetValue с различные DependencyProperty. Таким образом при чтении свойства CurrentTime значение будет получено из свойства зависимости CurrentTimeProperty, а при записи в свойство CurrentTime, значение будет записано в 'OtherProperty'.

Корректным обращением к DependencyProperty будет подобный вариант:

public DateTime CurrentTime {
  get { return (DateTime)GetValue(CurrentTimeProperty); }
  set { SetValue(CurrentTimeProperty, value); } }
}