温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - How to have a common superclass for xaml controls?
uwp-xaml xaml

其他 - 如何为xaml控件提供通用的超类?

发布于 2020-04-15 00:06:24

我有一个继承的xaml / uwp应用程序。

最初的开发人员创建了许多扩展UserControl的控件。他复制并粘贴到每个类中的所有这些类都有一些通用代码。我想重构事物,使通用代码在超类中。

我创建了超类,但是它不起作用:编译器声称“的部分声明不能指定不同的基类”。

我不知道该怎么做才能解决此问题。在xaml文件中,指定了x:Class属性,它具有所需类的全名。我尝试将根元素从UserControl更改为类的名称(具有完整的名称空间),但这也不起作用。

这有什么窍门?我确定Microsoft不会使用xaml来阻止我们创建类层次结构。

谢谢,弗兰克

查看更多

提问者
Frank LaRosa
被浏览
12
Nico Zhu - MSFT 2020-02-04 11:43

如何为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>