2012-05-25 72 views
0

我对WPF相当陌生,并且希望创建我称之为“构件框架”的东西。我的应用程序会有一个带有画布的窗口,我可以放置一个或多个“小部件”用户控件,这些控件可以拖动和调整大小。所有部件都会有一个共同的“铬”,或许与沿顶部按钮最大化/最小化,打开配置对话框等寻找一些关于用户控件/继承的WPF建议

在我的WinForm的日子里,我会创建一个包含常见的UI元素的基类的用户控件,每个小部件用户控件都从此继承,但我相信WPF没有用户控件继承的等价物。

所以我正在寻找让我开始的指针。答案是否在模板,用户控件中?任何代码片段或例子将不胜感激!

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

回答

1

对此的可能MVVM基础的解决方案将如下所示:

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

@AndrewStehpens让我知道如果这不明确,我会尽快发布一些代码。 – Slugart

+0

感谢您的回复,我想我明白了。据推测数据模板定义了特定WidgetViewModel的属性将如何呈现。 ContentPresenter会自动应用相应的数据模板,具体取决于与CP绑定的任何小部件(大概是通过数据模板的TargetType完成的)? –

+0

CP的唯一作用是应用并显示DataTemplate。 DataTemplate是一种轻量级的UserControl - 您可以准确定义将呈现哪些元素以及它们绑定的内容。 – Slugart