У меня есть два ComboBox
в настройках мастера / детализации. Все работает правильно. Я могу выбрать элемент в мастере ComboBox
, и соответствующие записи будут заполнены в детали ComboBox
.
Я хочу использовать пользовательское свойство (или переопределить ToString
) и использовать его в качестве DisplayMember
мастера ComboBox
. У меня это работает, но проблема у меня заключается в том, что когда пользовательское свойство привязано и я выбираю новую запись в мастере ComboBox
, дочерний элемент ComboBox
не обновляется.
Я думаю, что дочерний элемент ComboBox
не обновляется, потому что я ничего не уведомляю об изменении пользовательского свойства. Я знаком с INotifyPropertyChanged
и немного попытался его использовать, но он с треском провалился.
Я должен также упомянуть, что я использую весь объект ADO.NET DbContext и помещаю код пользовательского свойства в частичные классы, которые генерирует надстройка DbContext. Должен ли я делать эти изменения в базовых классах сущностей?
Моя основная сущность выглядит в основном так (все это генерируется автоматически, за исключением свойства Name
):
public partial class Owner
{
public Owner()
{
this.Deployments = new HashSet<Deployment>();
}
public int OwnerID { get; set; }
public string UserID { get; set; }
public Nullable<bool> IsAdmin { get; set; }
public virtual ICollection<Deployment> Deployments { get; set; }
public virtual Employee Employee { get; set; }
public string Name { get { return Employee.Name; } }
}
Таким образом, я в основном возвращаю свойство из свойства навигации Employee
как значение для Name
в Owner
. DisplayMember
для ComboBox
установлено на Name
. Когда я запускаю свое приложение, оно правильно связывает исходный мастер / деталь, но когда я меняю мастер ComboBox
на нового владельца, деталь не обновляется. Тем не менее, если я прокручиваю весь список, а затем возвращаюсь назад по списку, для корректного обновления. Если я свяжу DisplayMember
с одним из автоматически сгенерированных свойств, все будет работать как положено.
Редактировать: Странно то, что если я один раз прокручиваю весь список записей в мастере ComboBox
, ничего в дочернем элементе не обновится. Однако, если я сделаю второй проход через все основные записи снова, дочерний элемент ComboBox
ОБЯЗАТЕЛЬНО обновляется.