我有一个继承的xaml / uwp应用程序。
最初的开发人员创建了许多扩展UserControl的控件。他复制并粘贴到每个类中的所有这些类都有一些通用代码。我想重构事物,使通用代码在超类中。
我创建了超类,但是它不起作用:编译器声称“的部分声明不能指定不同的基类”。
我不知道该怎么做才能解决此问题。在xaml文件中,指定了x:Class属性,它具有所需类的全名。我尝试将根元素从UserControl更改为类的名称(具有完整的名称空间),但这也不起作用。
这有什么窍门?我确定Microsoft不会使用xaml来阻止我们创建类层次结构。
谢谢,弗兰克
如何为xaml控件提供通用的超类?
根据您的要求,您可以为创建抽象基类UserControl
。关键过程是在xaml中添加基类nameapce。
例如:
namespace ButtonResourceTest
{
public sealed partial class CustomUserControl : UserControlBase
{
public CustomUserControl()
{
this.InitializeComponent();
}
}
public abstract class UserControlBase : UserControl
{
}
}
Xaml
将默认的UserControl
根节点修改为local:UserControlBase
。
<local:UserControlBase
x:Class="ButtonResourceTest.CustomUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:ButtonResourceTest"
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>
</Grid>
</local:UserControlBase>