我已将项目从https://silverlightcontrib.codeplex.com/转换为WPF(github https://github.com/jogibear9988/silverlightcontrib)以获得WPF中的EMF / WMF元文件支持。
现在我的Probjem是,EMF类使用ContentControl来显示它的内容。内容也已设置,但不显示任何内容。如果我在WPF-Inspector中检查它,我发现EMF Control的内容列在" Logical-Tree"但不是在视觉!任何人都可以帮我解决这个问题吗?
Fork的当前状态是在线(如果有人查看代码!)
如果我看着窥探一切似乎都没问题:
你看,Content Presenter有一个Content set和Filled,但它没有进入Visual Tree ......
以下是WPF Inspector的逻辑树:
在这里视觉:
答案 0 :(得分:1)
两个最有可能的问题是,您的ContentControl
使用的ControlTemplate
没有ContentPresenter
(在一个专门使用默认Content
属性之外的问题上)或者它使用空DataTemplate
作为其ContentTemplate
。您应该能够通过在运行时检查来检查其中任何一个。
答案 1 :(得分:1)
我对Silverlight不是很熟悉,但在WPF中,当你覆盖MeasureOverride(...)
和ArrangeOverride(...)
时,你必须测量并安排对照组的孩子,以便他们可以测量和安排他们的孩子和等等。
在您的情况下,您必须在base.MeasureOverride(...)
类中包含从base.ArrangeOverride(...)
继承的Emf
和ContentControl
的来电。
答案 2 :(得分:0)
我还没有想到这一点,但这与尺寸有关。在Snoop中,它显示的RenderSize为0,0,在检查器中,实际高度/宽度也显示为0 - 您可以看到红色高亮检查器在元素周围绘制的是一个小点而不是一个矩形。我猜测EMF控件中有一些特定于Silverlight的行为,它们没有直接移植到WPF。