[WPF继承抽象UserControl

问题描述 投票:-1回答:1

我正在将应用程序从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>
wpf inheritance user-controls abstract
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.