Как наследовать пользовательский элемент управления в том же модуле с помощью XAML?

Я пытаюсь наследовать элемент управления, который я написал в проекте (используя XAML). Я пробовал с пустой страницей, и я даже не могу заставить это работать:

<local:BlankPage
    x:Class="MyNamespace.MyPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:MyNamespace"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid>
    </Grid>
</local:BlankPage>

BlankPage - это просто новый класс, производный от пустой страницы, который я создал с помощью мастера. MyPage то же самое. Ошибка, которую я получаю:

Тип "local:BlankPage" не найден. Убедитесь, что вы не пропустили ссылку на сборку и что все сборки, на которые ссылаются, были созданы.

Как выполнить наследование в XAML для приложений WinRT/Windows Store?


person Mark Ingram    schedule 24.01.2013    source источник
comment
Вы построили проект? Если проект построен, соответствует ли пространство имен имени создаваемого файла метаданных (или, как минимум, является ли имя файла метаданных префиксом имени пространства имен)? (По умолчанию файл метаданных имеет то же имя, что и проект.)   -  person James McNellis    schedule 24.01.2013
comment
Привет, да, проект построен, и они оба используют одно и то же пространство имен. Я мог заставить его работать, включив BlankPage.xaml.h в MyPage.xaml.h. Но это похоже на взлом!   -  person Mark Ingram    schedule 24.01.2013
comment
Никогда не крутите файлом h. Это не просто взлом, это не работает.   -  person Jerry Nixon    schedule 24.01.2013


Ответы (1)


Взгляните на свой XAML:

<local:BlankPage

Вы заявляете, что хотите, чтобы он создавал экземпляр BlankPage, но на самом деле вы хотите создать экземпляр своего пользовательского MyPage. Таким образом, это должно читать:

<local:MyPage

Предполагая, что MyPage находится в пространстве имен local.

Вот и все!

person Jerry Nixon    schedule 24.01.2013
comment
Я пытаюсь добиться наследования XAML, т.е. MyPage наследуется от BlankPage. - person Mark Ingram; 25.01.2013