Я надеюсь, что вы определили все элементы пользовательского интерфейса в DataTemplate. Вы можете сделать небольшой трюк на уровне ViewModel, чтобы достичь того, что вы ищете.
- Имейте класс Singleton в ViewModel, который должен иметь видимость или эквивалентное свойство, которое вы хотите связать с каждым TextBlock.
- Класс Singleton должен реализовывать INotifypropertyChanged, чтобы получать уведомление об изменении пользовательского интерфейса
Свяжите свойство Singleton в XAML и управляйте этим свойством из любого места в вашем приложении.
И простой класс Singleton может быть реализован как
public class Singleton :INotifyPropertyChanged
{
private Singleton() { }
public static Singleton Instance
{
get
{
if (instance == null){ instance = new Singleton(); }
return instance;
}
}
private Visibility _visibility;
public Visibility Visibility
{
get { return _visibility; }
set
{
_visibility = value;
PropertyChanged( this, new PropertyChangedEventArgs("Visibility") );
}
}
public event PropertyChangedEventHandler PropertyChanged;
private static Singleton instance;
}
Теперь вы можете управлять Singleton.Instance.Visibility = Visibility.Collased в любом месте от вашего кода позади