寻找关于用户控件/继承的一些WPF建议

时间:2012-05-25 12:53:01

标签: .net wpf

我是WPF的新手,希望创建我称之为“小部件框架”的东西。我的应用程序将有一个带有画布的窗口,我可以在其中放置一个或多个“窗口小部件”用户控件,可以将其拖动并调整大小。所有小部件都有一个共同的“chrome”,可能是顶部的按钮最大化/最小化,打开配置对话框等。

在我的winform时代,我会创建一个包含公共UI元素的基类用户控件,每个小部件用户控件都继承自此,但我相信WPF没有等效的用户控件继承。

所以我正在寻找让我入手的指示。答案是在模板,用户控件中吗?任何代码片段或示例都将非常感谢!

要了解我正在寻找的内容,请查看Codeplex上的“Chronos WPF”框架 - http://chronoswpf.codeplex.com/。这是一个小部件框架和更多 - 我徒劳地试图解开小部件的东西,但源是一个巨大的野兽,也与复合应用程序框架交织在一起。唉,它不再被积极开发。

1 个答案:

答案 0 :(得分:1)

基于MVVM的可能解决方案如下所示:

  1. 将Chrome创建为UserControl并将其绑定到ChromeViewModel以执行操作
  2. 在Chrome内部使用ContentPresenter控件,该控件然后绑定到ChromeViewModel上的Content属性。此Content属性应该是WidgetViewModel,它在您创建窗口小部件时在运行时设置。
  3. 您应该使用DataTemplate上的TargetType属性指定一个与每个WidgetViewModel关联的DataTemplate(确保将它们放在自己的资源字典文件中)。