繁体   English   中英

如何在C#Winforms中使用自定义对象集合将数据绑定到标签

[英]How to databind to a label with a custom object collection in C# winforms

我正在使用VB Power Pack数据中继器控件。 我需要将自定义对象列表绑定到转发器内的标签。 除Tip.User.UserName绑定外,以下代码有效。

我如何绑定到内部类的属性,如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;

完全取决于您遇到的错误,因为嵌套属性语法应适用于WinForm绑定。

作为一种变通方法(也许DataRepeater不在使用常规绑定机制?),向您的ITip实现中添加一个属性以将其包装起来:

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

编辑:如果要在值执行时更新绑定,也不要忘记在数据对象上实现INotifyPropertyChanged。 在这种情况下,为ITip实现的User属性和IUser实现的UserName发送属性更改的事件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM