Ваш вопрос неопределенный, но я ценю это (коммерческие вещи). Поэтому мы можем только догадываться, в чем может быть проблема.
Я буду стараться изо всех сил ...
Звучит так, как будто вы хотите семь кнопок ToggleButton, каждая кнопка активирует / деактивирует день недели. У вас есть коллекция из 7 булевых значений. Каждое свойство IsChecked объекта ToggleButton связано с логическим значением в коллекции.
Проблема в том, что в данный момент вы пытаетесь изменить объект в коллекции, а не просто свойство этого объекта. Я не знаю, поддерживается ли в ObservableCollection прямая замена элементов в определенных позициях или нет, но вполне возможно, что инфраструктура привязки WPF не поддерживает прямую замену объектов в коллекциях. Вы можете добавлять и удалять предметы, но не делать прямые свопы в определенных позициях.
Однако вы можете обойти это (возможное) ограничение.
Попробуйте создать новый класс, который реализует INotifyPropertyChanged следующим образом:
class BooleanWrapper : INotifyPropertyChanged
{
private Boolean isSelected;
public Boolean IsSelected
{
get { return isSelected; }
set
{
if (isSelected != value)
{
isSelected = value;
// TODO: Raise PropertyChanged event.
}
}
}
}
(Если вы не знакомы с INotifyPropertyChanged, это довольно просто - на MSDN есть множество примеров. Это позволяет инфраструктуре привязки обнаруживать изменения свойств)
Вместо наличия ObservableCollection , есть ObservableCollection . Каждое свойство IsChecked объекта ToggleButton должно быть связано со свойством IsSelected объекта BooleanWrapper.
Теперь вы не пытаетесь поменять объекты внутри и из коллекции, вы просто обновляете значение свойства объекта в коллекции.
В качестве примечания: если вы привязываетесь только к дням недели, по моему мнению, нет ничего плохого в привязке к классу, подобному:
class DaySelection : INotifyPropertyChanged
{
public Boolean IsMondaySelected { ... }
public Boolean IsTuesdaySelected { ... }
...
}
, что не должно вызывать у вас проблем, но это зависит от вас, и я, возможно, допустил ошибки в моем захвате психических требований - пожалуйста, игнорируйте, если это не имеет отношения к тому, что вы хотите.
Надеюсь, я что-то понял!