在 WPF 中显示多个 FrameworkElement 项
Displaying multiple FrameworkElement items in WPF
我有自定义 FrameworkElement(显示 3D 模型,并允许控制相机),我需要同时显示多个此类项目(它们应该重叠)。项目存储在列表中。
现在,我可以通过简单地在网格中放置几个 ContentControl 并使用我的 FrameworkElements 作为内容来实现这一点。它运作良好。但是,任何为自定义元素数量实现该结果的尝试都失败了。我试过使用 ItemsControl,但它不起作用。
有什么方便的方法来显示源列表中的多个项目,并将它们放在一个位置?
更新
Canvas 和 ItemsControl 根本不适合我。即使我只是将单个元素移到那里。
也就是说,
<ContentControl Content="{Binding DrawableElements[0]}"></ContentControl>
效果很好,但是
<ItemsControl>
<ContentControl Content="{Binding DrawableElements[0]}"></ContentControl>
</ItemsControl>
根本不起作用,尽管这是非常基本的方法。 Canvas 也是如此。我不知道,如果我正确使用它,但我就是不明白,为什么不想显示具有单个元素的简单 ItemsControl。
更新 #2
如果我有 class,它具有某些属性,其中包含 FrameworkElement,那么我的 ItemsControl,它使用此 class 实例的列表,将适用于除 FrameworkElement 之外的任何属性。现在我真的不明白发生了什么。
注:
我正在尝试遵循 MVVM 模式,因此代码对 UI 应该没有直接影响。这就是我首先选择 ContentControl 的原因。否则我可能只是将新的 FrameworkElements 作为子元素添加到简单的网格中。
问题是,ItemsControl 中的 ContentControl 默认将其大小参数设置为 0,因此,基本上,我的 FrameworkElements 大小仅为零。我必须手动指定 Widht 和 Height 才能使其可见。
我有自定义 FrameworkElement(显示 3D 模型,并允许控制相机),我需要同时显示多个此类项目(它们应该重叠)。项目存储在列表中。 现在,我可以通过简单地在网格中放置几个 ContentControl 并使用我的 FrameworkElements 作为内容来实现这一点。它运作良好。但是,任何为自定义元素数量实现该结果的尝试都失败了。我试过使用 ItemsControl,但它不起作用。 有什么方便的方法来显示源列表中的多个项目,并将它们放在一个位置?
更新
Canvas 和 ItemsControl 根本不适合我。即使我只是将单个元素移到那里。 也就是说,
<ContentControl Content="{Binding DrawableElements[0]}"></ContentControl>
效果很好,但是
<ItemsControl>
<ContentControl Content="{Binding DrawableElements[0]}"></ContentControl>
</ItemsControl>
根本不起作用,尽管这是非常基本的方法。 Canvas 也是如此。我不知道,如果我正确使用它,但我就是不明白,为什么不想显示具有单个元素的简单 ItemsControl。
更新 #2
如果我有 class,它具有某些属性,其中包含 FrameworkElement,那么我的 ItemsControl,它使用此 class 实例的列表,将适用于除 FrameworkElement 之外的任何属性。现在我真的不明白发生了什么。
注: 我正在尝试遵循 MVVM 模式,因此代码对 UI 应该没有直接影响。这就是我首先选择 ContentControl 的原因。否则我可能只是将新的 FrameworkElements 作为子元素添加到简单的网格中。
问题是,ItemsControl 中的 ContentControl 默认将其大小参数设置为 0,因此,基本上,我的 FrameworkElements 大小仅为零。我必须手动指定 Widht 和 Height 才能使其可见。