WPF控件的继承;不起作用
本文关键字:不起作用 继承 控件 WPF | 更新日期: 2024-10-20 05:34:57
我正在实现一个基于插件的软件,并希望允许插件开发人员指定用于显示数据和设置的GUI元素。但我无法对控件的基类进行子类化(在程序集中找不到类型)。这就是我所做的:
1.)在"小部件库"中实现-投影基类(仅代码,没有XAML):
namespace widgetbase
{
public class WidgetControl : Control
{
}
}
2.)构建了这个项目,并在"mywidget"-项目中包含了对它的引用。
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"类型。我不明白,我已经声明了类型public,包括了对基的引用,并调整了codebehind和XAML。在代码背后一切都很好,可以解析类型"WidgetControl"。
为什么在XAML中找不到该类型?
xmlns:wc="clr-namespace:widgetbase"
不是完整的声明。如果您要进入一个不同的程序集(听起来确实是这样,因为您需要一个引用),您必须注意在XMLNS:中
xmlns:wc="clr-namespace:widgetbase;assembly=WidgetCommon"
还要考虑从UserControl
派生,Control
稍微抽象一些。名称空间应该是PascalCase:)