Как связать текстовое поле со свойством в дочернем объекте текущего элемента? - PullRequest
0 голосов
/ 06 января 2020

Используя 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

1 Ответ

0 голосов
/ 08 января 2020

Мне удалось получить привязку к работе, переименовав вложенное свойство, и по предложению Джими использовал более отличительные имена для всех задействованных свойств. Я до сих пор не уверен, почему имена имели значение, насколько я мог судить, я связывался с правильным путем к свойству, с правильной прописной буквой и всем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...