wpf 重新加载自定义控件出现异常

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wpf 重新加载自定义控件出现异常相关的知识,希望对你有一定的参考价值。

异常:指定的元素已经是另一个元素的逻辑子元素。请先将其断开连接。
网上找了很多方法,都是说资源里面加x:shared=false,可以我前台界面就添加了1个grid,没出异常,异常是后台添加控件的时候,出现的这个异常。这该怎么解决,出现原因是第二次使用这个自定义控件,我在加载控件中写了grid.children.add(控件)。就这句报异常。请问该怎么解决?

参考技术A 看起来 系统还没有装好啊追问

关系统什么问题,这不是程序问题吗?

WPF自定义控件数据绑定出现的问题

测试发现,父控件构造函数中初始化界面的部分会完成子控件与父控件ViewModel的数据绑定。因此,如果在父控件构造函数执行前初始化父控件ViewModel中的属性,将导致在子控件执行OnApplyTemplate时无法获取到绑定的改属性。因此,需要尽量避免在父控件构造前构造父控件的ViewModel

正常情况下,ViewModel的初始化都会在控件构造前。我遇到这个问题是由于使用DataTemplate+ViewModel进行控件切换,需要提前初始化ViewModel作为DateTemplate选择View的依据。

我发现TextBox这类原生框架并不会因为这种顺序的差异而出现问题,本质上还是自己写的自定义控件存在缺陷。日后我会继续寻找这个缺陷,现在出现的这个问题,我会通过在父控件InitializeComponent()方法前再次初始化ViewModel中属性的方式解决。

以上是关于wpf 重新加载自定义控件出现异常的主要内容,如果未能解决你的问题,请参考以下文章

强制在自定义 WPF 控件中重新绘制自定义绘制的 UIElement

wpf自定义控件或窗体继承问题,继承之后出现不能是 XAML 文件的根

WPF自定义控件与样式(11)-等待/忙/正在加载状态-控件实现

WPF自定义控件与样式(11)-等待/忙/正在加载状态-控件实现

wpf中动态添加的自定义控件过宽,不能完全显示,怎么办

WPF自定义控件数据绑定出现的问题