Вместо того, чтобы пытаться установить значение с помощью триггера, почему бы просто не установить свойство UserControl.IsAtLeastOneUserAvailable
в вашем UserControl на основе запроса linq?
public bool IsAtLeastOneUserAvailable
{
get
{
return Users.Any(p => p.IsAvailable);
}
}
Вы также можете вызвать это событие PropertyChanged в измененном событии пользователя:
public MyUserControl()
{
Users.CollectionChanged += Users_CollectionChanged;
}
void Users_CollectionChanged(object sender, CollectionChangedEventArgs e)
{
if (e.NewItems != null)
foreach(User user in e.NewItems)
user.PropertyChanged += User_PropertyChanged;
if (e.OldItems != null)
foreach(User user in e.OldItems)
user.PropertyChanged -= User_PropertyChanged;
}
void User_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == "IsAvailable")
RaisePropertyChanged("IsAtLeastOneUserAvailable");
}