在WPF中使用数据绑定的控件上定制度量/排列算法



我正在为自定义编辑器编写安排/测量算法。编辑器使用自定义usercontrol派生类作为画布上的控件。这些控件数据绑定到数据模型对象上的各种属性/列表。自定义控件的度量和排列高度依赖于所绑定的数据(因为数据会影响控件的大小),也依赖于度量和排列控件的顺序。从我能够从MSDN上的WPF文档中确定的情况来看,数据绑定实际上是在控件被测量和安排之后,并且在控件被标记为已加载之前才执行的。据我所知,这意味着我必须等待所有控件被加载,然后才能实际测量和安排自定义画布。因此,我发现自己不得不在画布中设置标志,以确定何时可以和不能测量/安排它,并使用这些标志来强制无效和重新绘制。有没有更好的方法来定制测量/安排在画布上,我只是不知道?是否有办法在WPF中强制早期数据绑定?

如果数据绑定属性是您控制的自定义DependencyProperties,那么您可以在DP上设置元数据属性,以指示它们为AffectMeasure和AffectArrange。

如果这些DP的值发生变化,这将告诉WPF重新测量和重新排列

当你在FrameworkPropertyMetadata中注册DP时,你可以在这里设置:http://msdn.microsoft.com/en-us/library/system.windows.frameworkpropertymetadata.aspx

我不得不通过在我的[Measure|Arrange]Override方法中做检查来解决数据绑定限制,以确保所有的项目都已加载,并且在实际测量和安排控件之前填充了它们的ItemSources和DataContexts。如果有人找到了更好的方法,请贴在这里。非常感谢。

最新更新