У меня есть объект отчета (то есть бизнес-объект), который имеет несколько десятков полей для заполнения. Каждое поле само по себе имеет INotifyPropertyChanged
. Для активного отчета есть свойство доступа, называемое ActiveReport
.
Я хочу закрыть текущий отчет, не обязательно открывая новый, и иметь возможность автоматически создавать объект отчета, когда пользователь снова начинает вводить данные.
Вот примерное представление о структуре. ActiveReport
текущий отчет. Графический интерфейс позволяет напрямую устанавливать поля подкласса (имя / адрес электронной почты) через привязку. Я хочу, чтобы новый BusinessObject
создавался при задании имени, но ActiveReport имеет значение null. Еще одно предостережение: объект отчета автоматически генерируется из XSD-файлов, поэтому я бы предпочел не изменять его.
class ControlClass {
public BusinessObject ActiveReport { get; set; }
}
class BusinessObject {
UserInfo field1 { get; set; }
}
class UserInfo : INotifyPropertyChanged {
DependencyProperty name;
DependencyProperty email;
}
Я подумал о следующих сценариях:
- Свойство Accessor.
- Кажется, что привязка не использует аксессор.
- Вставка проверки во все обработчики событий.
- Я бы предпочел не прибегать к этому - это нарушает обоснование использования MVVM.
- MultiBinding
- Это потребует использования класса и экземпляра конвертера, и это выглядит как перебор.
- Конвертер
Я подумал спросить, есть ли другие хорошие модели программирования для этого в WPF.