私は を持っていますFrameworkElement
。たとえば、StackPanel
子供の場合、プロパティが私のDataTempltate
であるを作成する必要があります。この作業を行うには、 myを同等のに変換する必要があります。VisualTree
FrameworkElement
FrameworkElement
FrameworkElementFactory
どのようにできるのか?
私は を持っていますFrameworkElement
。たとえば、StackPanel
子供の場合、プロパティが私のDataTempltate
であるを作成する必要があります。この作業を行うには、 myを同等のに変換する必要があります。VisualTree
FrameworkElement
FrameworkElement
FrameworkElementFactory
どのようにできるのか?
おそらく、XamlWriterクラスとXamlReaderクラスを使用して、コントロールで使用される XAML のコピーを取得し、それを使用して別のコントロールを構築できます。
string panelXaml = XamlWriter.Save(myStackPanel);
StringReader stringReader = new StringReader(panelXaml);
XmlReader xmlReader = XmlReader.Create(stringReader);
StackPanel newStackPanel = (StackPanel)XamlReader.Load(xmlReader);
これは のみをコピーすると思うStackPanel
ので、おそらくその子も同じ方法でコピーする必要があります。
また、FrameworkElementFactory の MSDNの備考セクションごとに
このクラスは、や
FrameworkTemplate
などのサブクラスであるテンプレートをプログラムで作成する非推奨の方法です。このクラスを使用してテンプレートを作成する場合、すべてのテンプレート機能を使用できるわけではありません。テンプレートをプログラムで作成するための推奨される方法は、クラスのメソッドを使用して、文字列またはメモリ ストリームから XAML を読み込むことです。ControlTemplate
DataTemplate
Load
XamlReader