Кнопка подтверждения 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 отмены.

Другие вопросы по тегам