Лично я предпочитаю подкреплять Публичную собственность полем.
private private ObservableCollection<View> _actionItems;
public ObservableCollection<View> ActionItems
{
get
{
return this._actionItems;
}
set
{
this._actionItems = value;
}
}
ObservableCollection предоставляет уведомление об изменении пользовательского интерфейса при добавлении / удалении / перемещении объекта в коллекции.Для получения дополнительной информации, пожалуйста, смотрите post .
Проблема, с которой вы, скорее всего, столкнулись, заключается в том, что от вашей модели нет уведомлений об изменениях.Итак, когда свойство IsVisibile обновляется в вашей модели представления, как представление узнает, что оно изменилось?Общепринятым способом уведомления представления является использование интерфейса INotifyPropertyChanged.
Я не знаю конкретной реализации вашего класса представления, но вот пример.
public class View : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string PropertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(PropertyName));
}
private bool _isVisible;
public bool IsVisible
{
get
{
return this._isVisible;
}
set
{
this._isVisible = value;
this.OnPropertyChanged(IsVisible) <--- The Magic!
}
}
}
Вы должны связать свойство IsVisible в xaml, и всякий раз, когда это свойство обновляется, представление будет следовать его примеру!
Интерфейс INotifyPropertyChanged широко используется, и 90% кода, приведенного ниже, являются шаблонными.Вы можете поместить его в базовый класс или использовать инфраструктуру MVVM, которая предоставляет этот материал.Если вам нужна дополнительная информация о том, как реализовать интерфейс INotifyPropertyChanged, см. post .