UWP继承自从UserControl继承的类

时间:2017-04-16 16:49:26

标签: c# uwp windows-10-universal visual-studio-2017 uwp-xaml

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

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

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

concrete:
public sealed partial class MyPart : PartBase 

its XAML:
<local:PartBase 

我收到编译错误:命名空间中不存在名称“PartBase”。

UWP是否允许继承?

1 个答案:

答案 0 :(得分:2)

您的代码应该有效。我已经创建了你的抽象基类和一个基于该类的新控件。

<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指向正确的命名空间。在重建应用程序之前,设计人员也会给出错误。

所有内容都在这里构建并运行应用程序,因此如果在仔细检查所有名称空间声明后仍然出现错误,则必须将repro置于联机状态,以便我们检查还有其他问题。