Как привязать данные к метке с помощью пользовательской коллекции объектов в C # winforms - PullRequest
0 голосов
/ 01 июля 2010

Я использую контроль повторителя данных блоков питания VB.Мне нужно привязать список пользовательских объектов к меткам внутри повторителя.Следующий код работает за исключением привязки Tip.User.UserName.

Как связать со свойством класса Inner, например Tip.User.UserName

public interface ITip
   {
    DateTime Date { get; set; }
    int Id { get; set; }
    int UserId { get; set; }
    User User { get; set; }
    Group Group { get; set; }
 }

 public interface IUser
 {
    string DisplayName { get; set; }
    string UserName { get; set; }
 }






 List<Tip>  currentTips = SearchTips(toolTxtSearch.Text, Convert.ToInt32(toolCmbTipGroups.ComboBox.SelectedValue));


            lblTipId.DataBindings.Add(new Binding("Text", currentTips, "Id"));
            lblTipUser.DataBindings.Add(new Binding("Text", currentTips, "User.UserName")); // this line doesnot work !!!


            repeater.DataSource = currentTips;

1 Ответ

0 голосов
/ 01 июля 2010

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

В качестве обходного пути (может быть, DataRepeater не использует обычные механизмы привязки?) Добавьте свойство к реализации ITip, чтобы обернуть его:

public string UsersUserName
{
    get { return User != null ? User.UserName : null; }
}

Редактировать: Также не забывайте реализовывать INotifyPropertyChanged для ваших объектов данных, если вы хотите, чтобы привязки обновлялись, когда значения делаются. В этом случае отправьте измененные свойства свойства как для свойства User реализаций ITip, так и для UserName реализации IUser.

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