在C#中创建从WPF控件派生的自定义<page>类?

时间:2018-12-11 08:29:41

标签: c# wpf xaml

我一直在WPF应用程序中使用System.Windows.Controls.Page类,之后我才需要创建自己的类“ CustomPage”,该类派生自“ System.Windows.Controls.Page”,

public class CustomPage : System.Windows.Controls.Page
{
    public long? CustomProperty { get; set; }

    public CustomPage()
    {
         //some code
    }
}

这样

public partial class MyPage : Page
{
    public MyPage()
    {
        InitializeComponent();
    }
}

成为

public partial class MyPage : CustomPage
{
    public MyPage()
    {
        InitializeComponent();
        CustomProperty = null;
    }
}

但是当我重建解决方案时,自动生成的代码将刷新我的代码,并基于“ System.Windows.Controls.Page”而不是CustomPage创建类的第二部分

    /// <summary>
    /// MyPage
    /// </summary>
    public partial class MyPage : System.Windows.Controls.Page, System.Windows.Markup.IComponentConnector {
//...

,我收到类似“您的部分定义的类应引用相同的基类”之类的错误。如何使用派生的CustomPage类而不是System.Windows.Controls.Page并避免错误?如果我尝试在.xaml文件中修改类并使用<CustomPage>而不是<Page>,则在WPF中出现错误“不支持CustomPage类”。

[更新1] 这是我的.xaml文件,这里没什么好玩的,我无法通过这里的<Page>类修改我的<CustomPage>类,“不支持CustomPage”错误。

<Page x:Class="DerivedPage.MyPage"
      ...
      Title="MyPage">

    <Grid>

    </Grid>
</Page>

值得一提的是,我是WPF的新手,我不知道是否可以在这里使用我的自定义类

1 个答案:

答案 0 :(得分:1)

您应该告诉编译器显式使用您的类。

 <local:MyPage x:Class="DerivedPage.MyPage"
               xmlns:local="clr-namespace:AppName.DerivedPage"
               ...