我正在使用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;
答案 0 :(得分:0)
完全取决于您获得的错误,因为嵌套属性语法应该适用于WinForm绑定。
作为一种解决方法(也许DataRepeater没有使用常规绑定机制?)为ITip实现添加一个属性来包装它:
public string UsersUserName
{
get { return User != null ? User.UserName : null; }
}
编辑:如果您希望在值发生时更新绑定,也不要忘记在数据对象上实现INotifyPropertyChanged。在这种情况下,为ITip实现的User属性和IUser实现的UserName发送属性更改事件。