我正在为自定义编辑器编写排列/测量算法。编辑器使用自定义 UserControl 派生类作为画布上的控件。这些控件是绑定到我的数据模型对象上的各种属性/列表的数据。自定义控件的测量和排列高度依赖于绑定的数据(因为数据会影响控件的大小),并且还取决于测量和排列控件的顺序。根据我从 MSDN 上的 WPF 文档中能够确定的内容,数据绑定直到之后才真正执行控件被测量和排列,并且在控件被标记为已加载之前。据我所知,这意味着我必须等待所有控件都加载完毕,然后才能实际测量和安排我的自定义画布。结果,我发现自己必须在画布中设置标志以确定何时可以和不能测量/排列它,并使用这些标志来强制失效和重绘。有没有更好的方法在我不知道的画布上进行自定义测量/排列?无论如何强制 WPF 中的早期数据绑定?
问问题
802 次
2 回答
0
如果数据绑定属性是您控制的自定义 DependencyProperties,那么您可以在 DP 上设置元数据属性以指示它们 AffectMeasure 和 AffectArrange。
如果这些 DP 的值发生变化,这将告诉 WPF 重新测量和重新排列
在 FrameworkPropertyMetadata 中注册 DP 时设置此项,请参见此处:http: //msdn.microsoft.com/en-us/library/system.windows.frameworkpropertymetadata.aspx
于 2011-04-06T23:15:42.033 回答
0
我必须通过检查 [Measure|Arrange]Override 方法来解决数据绑定限制,以确保在实际测量和排列控件之前已加载所有项目并填充其 ItemSources 和 DataContexts。如果有人找到更好的方法来做到这一点,他们可以把它贴在这里吗?将不胜感激。
于 2011-06-01T17:31:41.417 回答