キャンバス内にさまざまなコントロールを含むGroupBoxがあります。実行時に、GroupBoxをExpanderに変更したいと思います。
いいえ、xamlではできません。それは簡単でしょう!
GroupBoxのすべての子を取得し、新しいVisualに追加するには、GroupBoxから子を切り離す必要があることを知っています。
コードは次のとおりです。
for (int i= 0; i < VisualTreeHelper.GetChildrenCount(Canvas2DHandler); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(Canvas2DHandler, i);
if (child != null && typeof(GroupBox) == child.GetType() )
{
GroupBox roomGroupBox = (GroupBox)child;
Expander roomExpander = new Expander();
StackPanel sPForExpander = new StackPanel();
roomExpander.Header = roomGroupBox.Header;
for (int n=0; n < VisualTreeHelper.GetChildrenCount(child); n++)
{
UIElement groupBoxChild = VisualTreeHelper.GetChild(child, n) as UIElement;
//remove control from groupBox (HOWTO???)
sPForExpander.Children.Add(groupBoxChild);
}
roomExpander.Content = sPForExpander;
}
}
子の削除に関する情報を取得しようとしていますが、GroupBoxの子の定義すら見つかりません。それがポイントかもしれませんか?
どうすればこれを解決できますか/完全に他の方法がありますか?
ヘルプのためのタンク!
ステフ