我正在为自定义编辑器编写一个排列/测量算法。编辑器使用自定义UserControl派生类作为画布上的控件。这些控件是绑定到我的数据模型对象上的各种属性/列表的数据。自定义控件的测量和排列高度依赖于绑定的数据(因为数据影响控件的大小),并且还取决于控件的测量和排列顺序。从我在MSDN上的WPF文档中可以确定的情况来看,直到在控件被测量和排列之后,并且在控件被标记为已加载之前,才实际执行数据绑定。据我所知,这意味着在实际测量和排列自定义画布之前,我必须等待所有控件都加载。结果,我发现自己必须在画布中设置标志以确定何时可以并且无法测量/排列它,并使用此标志强制失效和重绘。是否有更好的方法可以在画布上进行自定义测量/排列,我只是不知道?无论如何都要强制WPF中的早期数据绑定?
答案 0 :(得分:0)
如果数据绑定属性是您控制的自定义DependencyProperties,那么您可以在DP上设置元数据属性以指示它们是AffectMeasure和AffectArrange。
如果这些DP的值发生变化,这将告诉WPF重新测量并重新安排
您在FrameworkPropertyMetadata中注册DP时设置此项,请参阅此处:http://msdn.microsoft.com/en-us/library/system.windows.frameworkpropertymetadata.aspx
答案 1 :(得分:0)
我必须通过检查我的[Measure | Arrange] Override方法来解决数据绑定限制,以确保所有项目都已加载并在实际测量和排列之前填充了ItemSources和DataContexts。控制。如果有人找到了更好的方法,他们可以在这里发布吗?非常感谢。