#c# #.net #wpf #xaml #binding
#c# #.net #wpf #xaml #привязка
Вопрос:
У меня есть свойство, называемое IsVisible
:
public new bool IsVisible
{
get { return base.IsVisible; }
set
{
base.IsVisible = value;
this.RaisePropertyChanged ( "IsVisible" );
}
}
Итак, это свойство устанавливается на true
, когда левая кнопка мыши нажата для выбранного элемента в TreeView
. Это работает нормально, но у меня также есть CheckBox
я пытаюсь привязать к одному и тому же свойству двусторонним способом. Поэтому всякий раз, когда я изменяю это свойство с помощью нажатой левой кнопки мыши, CheckBox
показывает состояние isVisible, если оно верно. Итак, это работает частично.
Но проблема в том, что каждый раз, когда я устанавливаю этому свойству значение true для экземпляра, IsVisible
свойству всех других слоев присваивается значение false, но CheckBox
es не показывают изменения. Они все еще выглядят проверенными.
Поэтому всякий раз, когда я говорю:
layer.IsVisible = true;
для всех остальных слоев базовым классом установлено значение false, к исходному коду которого у меня нет доступа (показано выше).
Как я могу заставить мое приложение распознать это изменение?
Ответ №1:
Итак, вы скрываете свойство isVisible базового класса, которое не реализует INotifyPropertyChanged? Все флажки привязаны к вашему классу (не к базовому)?
Можете ли вы имитировать поведение базового класса, выполняя итерации по необходимым слоям и внося те же изменения в свои собственные свойства (которые, очевидно, уведомляют)?
Комментарии:
1. Спасибо, да, я скрываю это с помощью
new
ключевого слова, так что это работает, это определенно привязывается к моему классу. Что касается имитации поведения, я мог бы просмотреть все объекты, привязанные к моему приложению, что было бы единственным способом, иначе нет способа узнать, какие слои скрыты базовым классом, потому что за этим всегдаclear all
действием следует значениеlayer
visible .2. Если вы можете перейти ко всей коллекции ваших классов, вы могли бы просто создать метод с именем «UpdateFromBase()» (или что-то в этом роде) и в нем просто вызвать это. isVisible = base. Является видимым.