Мне нравится разбивать их по уровням, поэтому я отформатирую ваш пример следующим образом:
if (var1 = true
&& var2 = true
&& var2 = true
&& var3 = true
&& var4 = true
&& var5 = true
&& var6 = true){
Это удобно, когда у вас больше вложенности, как это (очевидно, реальные условия будут более интересными чем "= true" для всего):
if ((var1 = true && var2 = true)
&& ((var2 = true && var3 = true)
&& (var4 = true && var5 = true))
&& (var6 = true)){
INotifyPropertyChanged - это интерфейс, который существует в .Net с 2.0. По сути, это позволяет объектам уведомлять об изменении свойства. При возникновении этого события заинтересованная сторона может выполнять определенные действия. Проблема в том, что он публикует только название собственности. Таким образом, вы в конечном итоге используете отражение или некоторые сомнительные операторы if, чтобы выяснить, что делать в обработчике.
DependencyProperties - более сложная конструкция, которая поддерживает значения по умолчанию, уведомления об изменениях более эффективным с точки зрения памяти и производительным способом.
Единственная связь заключается в том, что модель привязки WPF поддерживает привязку либо к DependencyProperties, либо к стандартным свойствам Clr с реализацией INotifyPropertyChanged.
Я действительно не думаю, что существует связь между DependencyProperties и INotifyPropertyChanged. Единственная магия здесь заключается в том, что классы / утилиты привязки достаточно умны, чтобы распознавать DependencyProperty и напрямую связываться с ним или подписываться на событие notify-property-changed цели привязки и ждать, пока это сработает.