Есть несколько хороших ответов, поэтому я не буду предлагать конкретное решение напрямую, но рассмотрю общую проблему, с которой вы сталкиваетесь.Вы боитесь, что добавление некоторого механизма свойств зависимостей для репликации кажущихся простыми концепций сопоставления состояний, которые у вас уже есть, потенциально избыточно или, что еще хуже, может работать некорректно.
Правда состоит в том, что вы просто будете реализовывать то жеконцепции, использующие инфраструктуру свойств зависимостей вместо инфраструктуры CLR.Да, это будет немного более многословно, но это основополагающая вещь, на которой основан весь WPF.Например, ListBox
имеет SelectedItem
и SelectedIndex
, которые необходимо синхронизировать, как в вашем примере.Как только вы все сделаете правильно, независимо от того, что вы делаете, они никогда не выйдут из синхронизации.
Единственный раз, когда видимость может измениться, это когда состояние меняется, и вы можете установить видимость из обратного вызова изменения состояния., , если вы уверены, что обратный вызов будет называться .Фактически даже без свойств зависимостей вы иногда видите, как программисты используют именно эту стратегию, чтобы избежать вычислений в геттере для свойства.Так что думайте об этом не как о избыточности, а просто как о другом способе достижения той же цели.