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

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

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

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

原文地址:https://www.cnblogs.com/shiyingzhi/p/11731381.html