我正在将应用程序从WindowsForm迁移到WPF
在我的应用程序中,我必须根据用户选择在不同功能之间切换。为此,我实现了一个抽象的UserControl,其中包含我必须切换的所有UserControl的通用字段,方法和实现:
public abstract class UserControlBasic : UserControl
{
public UserControlBasic (X x)
{
InitializeComponent();
.
.
.
}
.
.
.
}
public partial class UserControlNumber1 : UserControlBasic
{
public UserControlNumber1 (X x) : base(x)
{
InitializeComponent();
}
.
.
.
}
在WindowsForms上没有问题,我只需要在不同的dll项目中实现UserControlBasic,即可使Visual Studio的设计器显示子级,但除此之外,它工作正常。
在WPF上看不到抽象类。构造函数被标记为错误'UserControl'不包含带有1个参数的构造函数
编译器不要求实现UserControlBasic的抽象方法(当然,因为它,UserControlNumber1继承自UserControl,而不是UserControlBasic)。] >
我没有碰到剩下的UserControlNumber1
的XAML面
<UserControl x:Class="***.UserControlNumber1"
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"
xmlns:local="clr-namespace:***"
xmlns:interface="clr-namespace:***"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
</Grid>
</UserControl>
标签* << [UserControlBasic] >> *(而不是简单的* << [UserControl] >> *)无法识别。
我在做什么错?我正在将应用程序从WindowsForm迁移到WPF。在我的应用程序中,我必须根据用户的选择在不同的功能之间进行切换。为此,我实现了一个抽象的UserControl ... 确定,我发现了错误。必须不仅使用.xaml.cs文件定义继承,还必须使用x:SubClass声明(请参见第二行)在.xaml中定义继承:
<UserControl x:Class="***.UserControlNumber1"
x:Subclass="***.UserControlBasic"
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"
xmlns:local="clr-namespace:***"
xmlns:interface="clr-namespace:***"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
</Grid>
</UserControl>