【问题标题】:Looking for some WPF advice on user controls/inheritance寻找一些关于用户控件/继承的 WPF 建议
【发布时间】:2012-05-25 12:53:01
【问题描述】:

我对 WPF 相当陌生,并希望创建我所谓的“小部件框架”。我的应用程序将有一个带有画布的窗口,我可以在其中放置一个或多个“小部件”用户控件,可以拖动这些控件并调整其大小。所有小部件都有一个共同的“镶边”,顶部可能带有用于最大化/最小化、打开配置对话框等的按钮。

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

所以我正在寻找让我开始的指针。答案是否存在于模板、用户控件中?任何代码 sn-ps 或示例将不胜感激!

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

【问题讨论】:

    标签: .net wpf


    【解决方案1】:

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

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

    【讨论】:

    • @AndrewStehpens 让我知道这是否不清楚,我会尽快发布一些代码。
    • 感谢回复,我想我明白了。据推测,数据模板定义了特定 WidgetViewModel 的属性将如何呈现。 ContentPresenter 是否会自动应用适当的数据模板,具体取决于绑定到 CP 的任何小部件(可能通过数据模板的 TargetType 完成)?
    • CP 的唯一作用是应用和显示DataTemplate。 DataTemplate 是一种轻量级的 UserControl - 您可以准确定义将呈现哪些元素以及它们绑定到什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多