【发布时间】:2015-03-05 22:11:08
【问题描述】:
我正在实现一个基于插件的软件,并希望允许插件开发人员指定一个 GUI 元素来显示数据和设置。但我无法继承控件的基类(在程序集中找不到类型)。这就是我所做的:
1.) 在“widgetbase”项目中实现基类(仅代码,无 XAML):
namespace widgetbase
{
public class WidgetControl : Control
{
}
}
2.) 构建项目并在“mywidget”-project 中包含对它的引用。
3.) 我创建了一个新的自定义 WPF 控件并更改了它将从我的基础派生的实现:
<wc:WidgetControl x:Class="mywidget.MyWidgetControl"
xmlns:wc="clr-namespace:widgetbase"
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">
<Grid>
<Grid Margin="20" Background="Blue">
<TextBlock Text="Test" FontSize="18" FontWeight="Bold" />
</Grid>
</Grid>
</wc:WidgetControl>
代码隐藏:
namespace mywidget
{
/// <summary>
///
/// </summary>
public partial class MyWidgetControl : WidgetControl
{
public MyWidgetControl()
{
InitializeComponent();
}
}
}
4.) 我尝试构建项目,但在“widgetbase”中找不到类型“WidgetControl”。我不明白,我已经声明了公共类型,包括对基础的引用并调整了代码隐藏和 XAML。在代码隐藏中一切都很好,可以解析“WidgetControl”类型。
为什么在 XAML 中找不到该类型?
【问题讨论】:
标签: c# .net wpf inheritance plugins