2014-06-03 2 views
8

Я хочу использовать пользовательскую ContentPage для своих страниц в Xamarin.Forms. Я попытался создать пользовательский класс и указать страницу в XAML как это:Используйте собственный базовый класс для ContentPage в Xamarin.Forms

<local:ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
        xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
        xmlns:local="clr-namespace:XamarinFormsApp.Controls" 
        x:Class="XamarinFormsApp.Views.WelcomeView"> 

    <Label Text="{Binding MainText}" VerticalOptions="Center" HorizontalOptions="Center" /> 

</local:ContentPage> 

Это будет (как правило) работают в XAML, но дает мне эту ошибку в Xamarin.Forms:

Error 7 The "XamlG" task failed unexpectedly. 
System.Exception: Can't load types from xmlns clr-namespace:XamarinFormsApp.Controls 
    at Xamarin.Forms.Build.Tasks.XamlG.GetNamespace(String namespaceuri) 
    at Xamarin.Forms.Build.Tasks.XamlG.GetType(String nsuri, String type, IList`1 typeArguments, Func`2 getNamespaceOfPrefix) 
    at Xamarin.Forms.Build.Tasks.XamlG.GenerateFile(String xamlFile, String outFile) 
    at Xamarin.Forms.Build.Tasks.XamlG.Execute() 
    at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() 
    at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__20.MoveNext() XamarinFormsApp.iOS 

Это (пока) не поддерживается, или я делаю что-то неправильно?

ответ

6

было исправлено в Xamarin.Forms 1.0.6197 выпущено на 2014-06-04.

также, ваш xmlns: местный пропускает атрибут assembly. Это не должно быть xmlns:local="clr-namespace:XamarinFormsApp.Controls;assembly=XamarinFormsApp"

UPDATE: сборка часть в Xmlns больше не требуется, если вы загружаете типы из той же сборки

+1

Прохладной, не знал, что формы были распределены по NuGet! Обычно в xaml (и в этом случае мне тоже не нужно было это делать). Благодаря! –

+0

У меня такая же проблема, но nuget не показывает обновлений пакетов, а номера версий в пакете nuget и ссылках на сборки все выше, чем указано в ответе. Это снова сломано? Есть ли другое решение? Mine - это совместный проект, а не PCL, но это не должно меняться. – Yort

+0

Подождите, я ошибся - пакет nuget, который у меня сейчас есть, всего 1.0.6186. К сожалению, функция обновления nuget не работает по какой-либо причине. – Yort

Смежные вопросы