我有一个FrameworkElement,比如有孩子的StackPanel,我需要创建一个DataTempltate,它的VisualTree属性是我的FrameworkElement。为此,我需要将我的FrameworkElement转换为等效的FrameworkElementFactory。
我该怎么做呢?
发布于 2012-10-10 21:19:45
您可能可以使用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,所以您可能也必须以相同的方式复制它的子对象。
还可以根据Remarks section on MSDN for the FrameworkElementFactory
此类是一种以编程方式创建模板的弃用方法,这些模板是
FrameworkTemplate的子类,如ControlTemplate或DataTemplate;使用此类创建模板时,并非所有模板功能都可用。以编程方式创建模板的推荐方法是使用XamlReader类的Load方法从字符串或内存流加载XAML。
https://stackoverflow.com/questions/12819670
复制相似问题