我正在尝试创建一个Repeater模板用户控件,即一个矩形边框包含一行UIElements像TextBox,ComboBox等,然后我会自动在行的末尾添加一个+按钮。开+按钮单击我要在其下方添加相同的重复行。
这是使用用户控件的语法:
<RepeaterTemplate>
<RepeaterTemplateItem>
<TextBox />
<ComboBox />
</RepeaterTemplateItem>
</RepeaterTemplate>
背后的代码:
RepeaterLayoutItem:
Public Grid RepeaterRow {get;组; } 公共列表LayoutItemCollection {get;组; }
//在+按钮上单击处理程序:
RepeaterLayoutItem duplicate = this.memberWiseClone(); LayoutItemCollection.Add(副本);
RepeaterLayout: public ObservableCollection Children {get;组; } public Grid RepeaterContentGrid {get;组; }
foreach(Children中的RepeaterLayoutItem项) { Grid duplicateRow = item.RepeaterRow;
RepeaterContentGrid.Children.Add(duplicateRow); //这里在+按钮点击时给出错误“元素已经是其他元素的子元素”。
}
我也尝试使用ICloneable接口,但问题仍然存在。
如果我使用memberWiseClone()复制该行,仍然在添加重复行时我得到相同的错误。可能是因为克隆的重复行中的Parent属性的非null值。
我不知道如何使这项功能正常运作。请帮助。
谢谢, GK Prajapati