Кнопка подтверждения Silverlight 3 Dataform не активируется
Я пишу элемент управления ChecklistBox, который представляет собой список, который отображает CheckBoxes внутри списка. Затем я использую этот элемент управления внутри EditTemplate DataForm. Наряду с этим элементом управления у меня есть два текстовых поля, которые привязаны к свойствам DataContext формы данных.
Для справки, ChecklistBox имеет три реализованных свойства...
- ItemsSource -> список возможных элементов коллекции для вашего объекта.
- ObjectCollection -> коллекция объектов, которые должны быть затронуты... продумайте детали вашего заказа в этом сценарии.
- CheckboxContentTemplate -> это то, что должно отображаться рядом с флажком в списке (обычно это просто текст объекта, но это может быть что угодно.)
Я сталкиваюсь с тем, что кнопка фиксации в Dataform не будет активирована, когда я изменю ObjectCollection. Однако, если я изменю текст любого текстового поля в шаблоне редактирования во время выполнения программы, моя кнопка "Активировать" активируется.
Есть идеи?
@Shawn:
У меня есть два объекта: пользователи и роли...
public class Users : INotifyPropertyChanged, IEditableObject
{
public string firstname {get{...}set{...}}
public string lastname {get{...}set{...}}
public RoleCollection Roles {get{...}set{...}}
}
public class Role : INotifyPropertyChanged, IEditableObject
{
public Guid Oid {get{...}set{...}}
public string Code {get{...}set{...}}
public string Name {get{...}set{...}}
public string Description{get{...}set{...}}
}
public class RoleCollection:BulkObservableCollection<Role>
{
}
public class BulkObservableCollection<T>:ObservableCollection<T>
{
public void AddRange(IList toAdd)
{
...
}
}
скажем, ради аргумента, что приведенный выше код имеет всю надлежащую структуру для обработки событий в INotifyPropertyChanged и IEditableObject. Когда я иду и собираю контрольный список, я смотрю на ObjectCollection ("user".Roles.Where(item => Item.Oid == role.Oid).Count > 0;), чтобы сказать, стоит ли первоначально проверять флажок или нет.
Я точно знаю, что когда я снимаю флажки и ставлю галочки, "DataContext" роли добавляется или удаляется из объекта, как я его проследил. Я хотел бы как-то предупредить форму данных о том, что когда я удаляю объект из "Ролей", он изменяет объект.
Я попытался захватить событие CollectionChanged из ObservableCollection, а затем запустить событие "PropertyChanged("Roles")", но, похоже, это не помогло.
3 ответа
DataForm предполагает один объект, а не коллекцию для кнопки фиксации. Можете ли вы объяснить свои связанные данные немного яснее?
Может быть, в вашем AddRange yuo не используется интерфейс INotifyCollectionChanged, верно? (не могу сказать из примера). В противном случае похоже, что вы делаете правильные вещи.
У меня была такая же проблема с использованием Silverlight 4 и RIA Serivces.
Я решил установить WCF RIA Services с пакетом обновления 1 и переустановить WCF RIA Services Toolkit для WCF RIA Services SP1.
Эти два установщика можно найти по адресу: http://www.silverlight.net/getstarted/riaservices/
Прямая ссылка на WCF RIA Services SP 1: http://go.microsoft.com/fwlink/?LinkId=205085 Прямая ссылка на инструментарий WCF RIA Services для WCF RIA Services SP1: http://go.microsoft.com/fwlink/?LinkID=205088
Проверьте, является ли режим привязки двухсторонним для свойств, связанных с формой данных. Это активирует ваши кнопки OK отмены.