(WPF)UserControl或CustomControl?

时间:2010-10-20 11:59:08

标签: .net wpf user-controls

我需要构建一个特定的交互式绘图“画布”。

在该画布中,用户可以放置图形元素 - 与线条相关联的点。

我有一个准备好的WinForms UserControl - pointsList,它代表画布中显示的点列表。 PointsList能够添加和删除点,用一条线链接它们。

pointsList应该是画布中的浮动(可移动)和可调整大小的控件(就像屏幕上的窗口一样)。

我的问题:

  1. 这个“画布”的最佳选择是什么 - WPF UserControl或CustomControl
  2. 是否可以在WPF 控件中放置(浮动)WinForm UserControl?
  3. 难以在其他内部重写浮动和可调整大小的WPF用户控件吗?
  4. 修改

    更好地解释“浮动控制”:

    想象一下WPF容器(比如说,Canvas)。 在这个画布中你有一个按钮。 单击该按钮时,“浮动窗口控件”将在内部中打开

    此控件类似于Windows窗体,可以打开,移动,关闭,调整大小,但所有这些都在父画布中。类似于MDI父表单和子表单的东西,但父表单不是表单,而是WPF容器(比如Canvas)。

2 个答案:

答案 0 :(得分:4)

1)两种类型都适合您的需求。 UserControls通常更容易创作,尤其是当您不熟悉WPF时。 CustomControl实际上不是类,但它意味着您扩展现有控件。两种方法之间存在一些差异,最大的一种方法是自定义控件更容易使其成为主题。在你的情况下,我认为这不是一个需要,所以我建议一个UserControl。有关此问题的更多信息:http://www.wpftutorial.net/CustomVsUserControl.html

2)是的。您可以使用WindowsFormsHost控件在WinF中放置WinForms控件。一个限制是WinForms控件必须是一个非透明的矩形,这意味着你不能投入不同的形状并期望它们正确叠加。寻找WindowsFormsHost,你会发现很多例子。

3)你能更好地解释一下吗?不明白你的意思,但当然你可以把UserControls放在彼此之内,而WPF在处理动态大小调整时特别有用。

答案 1 :(得分:1)

我们从CodeProject中调整了这个WPF代码有很多里程。 link text