WPF:我可以继承一个用户控件,但不提供任何XAML?(WPF: can I inherit a U

2019-09-17 03:07发布

我延长其使用什么样子PRISM提供组合性的早期化身第三方应用。

我原型一种观点认为,这是非常简单的。 为了让我的UI插入第三方UI我的用户必须实现特定的接口(如IThirdPartyView)。

这是罚款。 但是...现在我想要实现的更多的生产方式的代码。 而一个关键的一点是,我写的用户控件必须是无污染的,所以不能直接依赖于第三方的东西。 如果我们切换到另一个第三方,我们不希望有另外一个烤成的代码依赖。

作为一个面向对象的背景我认为解决方案是简单的:有我在一个单独的组件,它不依赖于任何第三方UI。 让我们把它CleanUserControl。 然后在第三方具体实施,扩展类CleanUserControl,并且具有扩展的一个实施第三方特定接口以及致以CleanUserControl类,这样一类的声明是这样的:

public class SpecificUserControl : CleanUserControl, IThirdPartyView
{
    // Implementation of IThirdPartyView
}

但是...在实践中我无法实现这一目标。

我设法得到它来编译但后来打这个在运行时:

    The component 'CustomerProfile.ThirdParty.View.SecurityView2' does not have a
    resource identified by the URI '/CustomerProfile;component/view/securityview.xaml'

实际上我想我要我的扩展模块,仅落后执行代码,并继承父的XAML,但我不知道这是否可以做到的。

我希望我的问题是清楚的,我很难解释它!

Answer 1:

你不能继承XAML。 这是明确禁止的。 你最好的机会是创造内容的共同XAML模板,并将其应用到你的“派生”的控制。 您可以将模板,无论你想,无论是相同的组件或其他。

另一种可能性是实现你的父母控制:

  • 创建父控件作为一个经常XAML控制
  • 编译组件
  • 转到obj的文件夹
  • 检查的源代码与扩展.g.cs您的控制
  • 复制自动生成的代码,并重新开始创建纯C#你的控制


文章来源: WPF: can I inherit a UserControl but provide no XAML?