その中にいくつかの devexpress aspx コントロールを含む複合コントロール クラスを作成しています。ただし、設計時に問題があります。公開する子コントロールのプロパティを変更するたびに、子コントロールのインターフェイス/スキンが失われます (下の画像のように) 上の画像は、leftlistbox、下の 2 つのボタンが aspx であることを示しています。コントロール、rightlistbox は asp コントロールです。複合コントロールの子コントロールのプロパティにアクセスして変更するたびに、上記のように、設計時にこれらの devexpress コントロールのみがインターフェイス/スキンを失います。以下は、複合コントロールのクラス ファイルです。
[ParseChildren(true), PersistChildren(false)]
public class CompositeControl_TEST : CompositeControl, INamingContainer
{
private ASPxListBox leftListBox;
private ListBox rightListBox;
private ASPxButton lefttoright;
private ASPxButton righttoleft;
[Bindable(true), DesignerSerializationVisibility(DesignerSerializationVisibility.Content), RefreshProperties(RefreshProperties.Repaint), NotifyParentProperty(true)]
[PersistenceMode(PersistenceMode.InnerProperty)]
public DevExpress.Web.ASPxEditors.ASPxListBox XF_leftListBox
{
get
{
this.EnsureChildControls();
return leftListBox;
}
}
[Bindable(true), DesignerSerializationVisibility(DesignerSerializationVisibility.Content), RefreshProperties(RefreshProperties.Repaint), NotifyParentProperty(true)]
[PersistenceMode(PersistenceMode.InnerProperty)]
public ListBox XF_rightlistBox
{
get
{
this.EnsureChildControls();
return rightListBox;
}
}
[Bindable(true), DesignerSerializationVisibility(DesignerSerializationVisibility.Content), RefreshProperties(RefreshProperties.Repaint), NotifyParentProperty(true)]
[PersistenceMode(PersistenceMode.InnerProperty)]
public DevExpress.Web.ASPxEditors.ASPxButton XF_left2rightButton
{
get
{
this.EnsureChildControls();
return lefttoright;
}
}
[Bindable(true), DesignerSerializationVisibility(DesignerSerializationVisibility.Content), RefreshProperties(RefreshProperties.Repaint), NotifyParentProperty(true)]
[PersistenceMode(PersistenceMode.InnerProperty)]
public DevExpress.Web.ASPxEditors.ASPxButton XF_right2leftButton
{
get
{
this.EnsureChildControls();
return righttoleft;
}
}
protected override void RecreateChildControls()
{
base.EnsureChildControls();
}
protected override void CreateChildControls()
{
this.Controls.Add(new LiteralControl(@"<div>"));
this.Controls.Add(new LiteralControl(@"<table>"));
this.Controls.Add(new LiteralControl(@"<tr>"));
this.Controls.Add(new LiteralControl(@"<td>"));
this.leftListBox = new ASPxListBox();
this.leftListBox.ID = this.ClientID + "leftListBox";
this.leftListBox.Items.Add("left from cs");
this.Controls.Add(leftListBox);
this.Controls.Add(new LiteralControl(@"</td>"));
this.Controls.Add(new LiteralControl(@"<td>"));
this.rightListBox = new ListBox();
this.rightListBox.ID = this.ClientID + "rightListBox";
//this.rightListBox.Items.Add("Right from cs");
this.Controls.Add(rightListBox);
this.Controls.Add(new LiteralControl(@"</td>"));
this.Controls.Add(new LiteralControl(@"</tr>"));
this.Controls.Add(new LiteralControl(@"<tr>"));
this.Controls.Add(new LiteralControl(@"<td>"));
this.lefttoright = new ASPxButton();
lefttoright.ID = this.ClientID + "lefttoright";
lefttoright.Text = "lefttoright";
this.Controls.Add(lefttoright);
this.Controls.Add(new LiteralControl(@"</td>"));
this.Controls.Add(new LiteralControl(@"<td>"));
this.righttoleft = new ASPxButton();
righttoleft.ID = this.ClientID + "righttoleft";
righttoleft.Text = "righttoleft";
this.Controls.Add(righttoleft);
this.Controls.Add(new LiteralControl(@"</td>"));
this.Controls.Add(new LiteralControl(@"</tr>"));
this.Controls.Add(new LiteralControl(@"</div>"));
base.CreateChildControls();
}
}
}
Web で同様の問題を検索しましたが、一致する問題が見つからないようです。