花了一段时间,但我似乎找到了解决方案。
现在我能够创建一个已经包含所有子类所需的视觉元素的基类。并且它们可以通过 XamlWriter/Reader 解析而不会重复。哇。
1) 扩展 UserControl (不要 Add->UserControl 但 Add->Class 并手动继承)
2) 放置标准 InitializeControl(); 进入构造函数
3) 实现 InitializeControl() 并将布局、添加子项和其中的任何内容
4) xamlwrite/xamlread/inherit 疯狂
希望它对某人有所帮助,并且我没有监督不可预见的..
——编辑:当然。会有重复,但我们看不到它们。在 XamlReader 完成之后,我的 InitializeComponent() 创建了 UIElements,之后获得了 xaml-parsed 的那些。代码中的任何引用都与未显示的代码创建控件有关:/
叹。
一个远非完美的解决方法是将开关放入 Initialized 事件处理程序中,如下所示:
Initialize() 将 UIElements 添加到可视化树中, Reinitialize() 只是找到正确的引用 (by ) 和 Multiinitialze () 重新创建事件处理程序以及在通过 XamlReader 的过程中丢失的其他内容。if(HasContent)
Initialize();
else
Reinitialize();
Multiinitialize();
control = FindName("controlName")
好吧,现在您可以在 xaml 中实例化自定义继承的 UserControl,但没有简单的方法来设置属性。那是因为设置属性发生在 Initialized-event 之前,并且有 NullPointerExceptions 等待。我猜你可以用绑定来解决这个问题。
但必须有一个更简单的方法。请告诉我!