Создать собственный класс <Page>, полученный из элемента управления WPF в C #? - PullRequest
0 голосов
/ 11 декабря 2018

Я использовал класс System.Windows.Controls.Page в своем приложении WPF, прежде чем почувствовал необходимость создать свой собственный класс "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>, я получаю сообщение об ошибке «Класс CustomPage не поддерживается» в WPF.

[обновление 1] здесь мой файл .xaml, ничего интересного здесь, я не могу изменить свой класс <Page> моим классом <CustomPage>, ошибка «CustomPage не поддерживается».

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

    <Grid>

    </Grid>
</Page>

Стоит отметить, что я новичок в WPF, я не знаю, возможно ли здесь использовать мой пользовательский класс

1 Ответ

0 голосов
/ 11 декабря 2018

Вы должны указать компилятору явно использовать ваш класс.

 <local:MyPage x:Class="DerivedPage.MyPage"
               xmlns:local="clr-namespace:AppName.DerivedPage"
               ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...