如何使XAML视图(页面)从使用UserControl作为通用类型的类继承

时间:2018-08-08 00:37:44

标签: c# wpf generics inheritance

我有一个问题,我不知道我是否可以这样做,或者是否有另一种方法可以做到。我有一个名为“ BasePage”的抽象类,它是我的.NET Standard库,因此无法访问System.Windows命名空间。它的声明是:

public abstract class BasePage<VR> where VR : new()

编辑:上面的类具有可访问VR的公共属性

现在,对于每个平台(WPF,Xamarin等),我必须创建自己的类开始 VR 的实现,以实现每个平台的内容控件(例如,用于WPF的UserControl)。我已经做到了,这是:

public class WindowsBasePage : BasePage<UserControl>

现在,每次我想创建一个页面来向窗口添加内容时,我都必须创建类似这样的内容:

 public partial class UserPassPage : WindowsBasePage
    {
        public UserPassPage()
        {
            InitializeComponent();
        }
    }

当我必须在XAML文件(视图)中进行设置时,问题就出现了。我可以创建它并构建:

<local:WindowsBasePage x:Class="Bitture.AppManager.Manager.UserPassPage"
                       [...]
                       xmlns:local="clr-namespace:Bitture.AppManager.Manager"
                       mc:Ignorable="d" >



</local:WindowsBasePage>

但是我不能添加组件(例如按钮,文本,网格,堆栈面板等)。我想知道我是否可以使用当前代码执行此操作,或者需要更改某些内容。因为我必须访问继承自

的通用类型WindowsBasePage
class WindowsBasePage : BasePage<UserControl>

1 个答案:

答案 0 :(得分:0)

我不确定您要在此处做什么,但是您无法将UIElements添加到您的自定义类中,该自定义类不能从任何常见的WPF基类(例如{{ 1}}或Panel,并希望将其呈现为ContentControl或其他WPF控件。

这行不通。 WPF知道如何呈现WPF控件,但不知道如何呈现自定义UserControl