Основной / подробный вид со связанным пользовательским свойством (или переопределенным ToString) - PullRequest
0 голосов
/ 04 февраля 2012

У меня есть два 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 ОБЯЗАТЕЛЬНО обновляется.

...