C# 从另一个程序集中具有xaml的wpf类派生cs类
我在项目C# 从另一个程序集中具有xaml的wpf类派生cs类,c#,wpf,xaml,C#,Wpf,Xaml,我在项目a namespace WpfApplication1 { /// <summary> /// Interaktionslogik für Layer.xaml /// </summary> public partial class Layer { public Layer() { InitializeComponent(); } } } 但当
a
namespace WpfApplication1
{
/// <summary>
/// Interaktionslogik für Layer.xaml
/// </summary>
public partial class Layer
{
public Layer()
{
InitializeComponent();
}
}
}
但当我开始的时候,我得到了
The component `TestingLayer` does not have a resource identified by the URI `/WpfApplication1;component/layer.xaml`
我已经在谷歌上搜索并找到了一些与该问题相关的线程,但有一些不同之处:
TestingLayer
周围做一个包装器,但不幸的是,这对我不起作用,因为我想访问一些受保护的功能(尤其是OnRender
的访问权限,我无法修改)。此外,OP需要一个带有xaml的派生控件,这与我的需求有很大区别,因为我的派生类没有xaml。这种差异也适用于这些线程
A
中创建TestingLayer
时,派生就起作用了,所以我认为URI中存在一个问题。但我不知道怎么解决它
总之:如何从另一个程序集的控件(使用xaml)中仅使用cs文件派生c#类?控件适用于聚合,而不适用于继承。如果你是指单元测试,那么你不应该这样做。事实上,我无法想象对
OnRender
(正确或错误地呈现内容)进行单元测试。谢谢您的评论。为了帮助你想象一下关于OnRender
的单元测试,请看我的这篇文章。很抱歉,这看起来像是过度使用单元测试,WPF infrastructure正好证实了这一点。@Dennis:你对这个问题或我链接的线程的最后评论是什么?但无论如何,它也不能回答我的问题,也不能回答我的问题(即如何从另一个程序集中的控件派生)。这个问题不是关于单元测试的正确用法。我想这里已经有人问过了:
using WpfApplication1;
namespace WpfApplication2
{
public class TestingLayer : Layer
{
}
}
The component `TestingLayer` does not have a resource identified by the URI `/WpfApplication1;component/layer.xaml`