我正在将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是否允许继承?
答案 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置于联机状态,以便我们检查还有其他问题。