在WPF中显示多个FrameworkElement项

时间:2015-03-30 15:20:39

标签: c# wpf contentpresenter

我有自定义FrameworkElement(显示3D模型,并允许控制相机),我需要同时显示这种类型的多个项目(它们应该重叠)。项目存储在列表中。 现在,我可以通过简单地在Grid中放置一些ContentControl,并使用我的FrameworkElements作为内容来实现这一点。它运作良好。但是,任何为自定义ammount元素实现该结果的尝试都会失败。我试过使用ItemsControl,但它只是不起作用。 有没有方便的方法从源列表中显示多个项目,将它们放在一个位置?

更新

Canvas和ItemsControl根本不适合我。即使我只是在那里移动单个元素。 这意味着,

<ContentControl Content="{Binding DrawableElements[0]}"></ContentControl>

运作良好,但

<ItemsControl>
    <ContentControl Content="{Binding DrawableElements[0]}"></ContentControl>
</ItemsControl>

根本不起作用,但这是非常基本的方法。 Canvas也是如此。我不知道,如果我正确使用它,但我无法理解,为什么单个元素的简单ItemsControl不希望显示。

更新#2

如果我有具有某些属性的类,其中包含FrameworkElement,那么使用此类实例列表的ItemsControl将对任何属性EXCEPT FrameworkElement都可以正常工作。现在我真的无法理解发生了什么。

注意: 我正在尝试遵循MVVM模式,因此不应该对代码中的UI产生直接影响。这就是为什么我首先选择了ContentControl。否则,我可能只是将新的FrameworkElements作为子项添加到简单的Grid。

1 个答案:

答案 0 :(得分:0)

问题是,ItemsControl中的ContentControl默认将其大小参数设置为0,因此,基本上,我的FrameworkElements只是零大小。我必须手动指定Widht和Height以使其可见。