Я работаю над приложением Metro, используя XAML и C#. Я начал это с помощью WPF в Win7. Я создал базовый класс, унаследованный от UserControl, а затем попытался поместить его в свой XAML.
В Windows 7 это отлично работало:
<MyType:AnImplementation
...
xmlns:MyType="clr-namespace:MyAppNamespace"
/>
Я пробовал то же самое в Win8, но, к сожалению, получаю ошибки -
<MyType:AnImplementation
...
xmlns:MyType="using:MyAppNamespace"
/>
теперь выдает это: Неожиданный сбой задачи CompileXaml. Затем исключение нулевой ссылки.
Я не гений WPF, поэтому, возможно, я делаю это совершенно неправильно - я только недавно начал вникать в это, но у меня возникли проблемы с выделением этой проблемы. Это какая-то проблема курицы/яйца, или есть другой способ создания пользовательских элементов управления в Win8 XAML?
изменить: я подумал, что было бы полезно быть более ясным. У меня нет проблем с созданием пользовательских элементов управления, у меня возникают проблемы с созданием пользовательских элементов управления моего собственного базового типа, который наследуется от UserControl. Например:
Базовый класс мы назовем MyBaseType, который наследуется от UserControl и имеет несколько виртуальных методов:
public class MyBaseType : UserControl
{
public MyBaseType() : base() {}
}
Новый пользовательский элемент управления ActionTile:
public partial class ActionTile : MyBaseType {}
Когда я помещаю это в свой XAML:
<myType:MyBaseType
... (other XAML imports)
xmlns:myType="using:MyNamespace"/>
Компилятор взрывается.
Если вы хотите реплицировать, создайте базовый класс, наследуемый от UserControl, затем реализуйте элемент управления, наследуемый от базового класса, и попытайтесь создать новый UserControl этого нового типа. Как я уже сказал, отлично работает в WPF на Windows 7.