我在项目A
namespace WpfApplication1
{
/// <summary>
/// Interaktionslogik für Layer.xaml
/// </summary>
public partial class Layer
{
public Layer()
{
InitializeComponent();
}
}
}
使用这个xaml(在我的项目中它有一个复杂的工具提示,但为了简单起见我将其更改为TextBlock)
<Canvas x:Class="WpfApplication1.Layer"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Canvas.ToolTip>
<TextBlock Text="ToolTip"/>
</Canvas.ToolTip>
</Canvas>
出于测试目的,我想从我的TestAssembly
中派生出来using WpfApplication1;
namespace WpfApplication2
{
public class TestingLayer : Layer
{
}
}
但是当我开始时,我得到了
The component `TestingLayer` does not have a resource identified by the URI `/WpfApplication1;component/layer.xaml`
我已经使用Google搜索并找到了与该问题相关的一些线程,但存在一些差异:
这个建议围绕TestingLayer
创建一个包装器,但不幸的是,这对我不起作用,因为我希望能够访问一些受保护的功能(特别是OnRender
访问我无法修改)。此外,OP需要使用xaml派生控件,这对我的需求有很大的不同,因为我的派生类没有xaml。这种差异也适用于这些线程
由于在我的项目TestingLayer
中创建A
时推导起作用,我认为URI中只有一个问题。但我不知道如何解决它。
总结一下:如何使用来自另一个程序集的控件(带有xaml)的cs文件派生一个c#类?