Используя WinForms, у меня есть источник привязки со списком объектов Question, поскольку это источник данных. Каждый из этих объектов Question имеет (среди прочего) дочерний объект с именем 'varname'. varname имеет строковое свойство VarLabel.
Я хочу, чтобы форма отображала один вопрос за раз, и пользователь мог перемещаться по нему с помощью навигатора привязок.
Это работает нормально, пока я не попытаюсь добавить текстовое поле для отображения VarLabel.
Я попытался привязать элементы управления формы в конструкторе следующим образом:
public Form1 ()
{
CurrentSurvey = GetSurveyInfo(); // get from database
// check for null survey etc.
InitializeComponent();
bs = new BindingSource
{
DataSource = CurrentSurvey.Questions
};
txtVarLabel.DataBindings.Add("Text", bs, "varname.VarLabel");
// set other control bindings which work fine, but they are properties of the current question
// object
}
Ни один из объектов не является нулевым, я дважды проверил. Все свойства публикуются c auto-properties.
Я неправильно связываю дочерние свойства?
РЕДАКТИРОВАТЬ: определения классов
varname - это объект VariableName, определяемый как:
public class VariableName
{
public string VarName { get; set; }
public string refVarName { get; set; }
public string VarLabel { get; set; }
public DomainLabel Domain { get; set; }
public TopicLabel Topic { get; set; }
public ContentLabel Content { get; set; }
public ProductLabel Product { get; set; }
}
Questions - это BindingList объектов SurveyQuestion, содержащих свойство VariableName.
public class SurveyQuestion
{
public VariableName Varname { get; set; }
// many other properties
}
Версия фреймворка 4.6.1