UWP 继承自 class 继承自 UserControl

UWP inherit from a class inherited from UserControl

我正在将 Silverlight 应用程序移植到 UWP Windows 10 应用程序。

它的很大一部分有控件,继承自 class,继承自 UserControl。

base:
public abstract class PartBase : UserControl, IPart, IDisposable

concrete:
public sealed partial class MyPart : PartBase 

its XAML:
<local:PartBase 

我收到编译错误:命名空间中不存在名称 "PartBase"..

UWP 允许继承吗?

您的代码应该可以工作。我已经创建了您的抽象基础 class 和基于该 class 的新控件。

<local:PartBase
    x:Class="UWPTest.Controls.MyUserControl1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:UWPTest.Controls"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300"
    d:DesignWidth="400">

    <Grid>
        <Button>Test</Button>
    </Grid>
</local:PartBase>

仔细检查 xmlns:local="using:UWPTest.Controls" 与声明的命名空间 PartBase 是否正确。然后重建您的解决方案,错误应该消失(如果不重建,您将看到错误).

在页面(例如 MainPage)上,我可以简单地使用控件:

<Page
    x:Class="UWPTest.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:controls="using:UWPTest.Controls"
    mc:Ignorable="d">

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <controls:MyUserControl1 />
    </Grid>
</Page>

注意 xmlns:controls 指向正确的命名空间。在您重新构建应用程序之前,设计器也会报错。

一切都在这里构建并且应用程序运行,所以如果您在仔细检查所有命名空间声明后仍然有错误,您必须在线重现,以便我们检查还有什么问题。