Расширение разметки не найдено - PullRequest
0 голосов
/ 28 января 2019

Я изучал документацию, найденную на странице Microsoft, потому что я готов изучать xamarin.forms.Всякий раз, когда появляется новая тема, я пытаюсь написать небольшое приложение, которое проверяет то, что я только что изучил.Экспериментируя с расширениями разметки xaml, я обнаружил, что один из примеров, показанных в документации Microsoft, не работает для меня, даже когда я копирую его с веб-сайта и вставляю в свой проект против.

Код C # это

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;

namespace XamarinLab
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
        }
    }

    public class HslColorExtension : IMarkupExtension<Color>
    {
        public double H { set; get; }

        public double S { set; get; }

        public double L { set; get; }

        public double A { set; get; } = 1.0;

        public Color ProvideValue(IServiceProvider serviceProvider)
        {
            return Color.FromHsla(H, S, L, A);
        }

        object IMarkupExtension.ProvideValue(IServiceProvider serviceProvider)
        {
            return (this as IMarkupExtension<Color>).ProvideValue(serviceProvider);
        }
    }
}

и код xaml

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:XamarinLab"
             x:Class="XamarinLab.MainPage">

    <ContentPage.Resources>
        <ResourceDictionary>
            <Style TargetType="BoxView">
                <Setter Property="WidthRequest" Value="80" />
                <Setter Property="HeightRequest" Value="80" />
                <Setter Property="HorizontalOptions" Value="Center" />
                <Setter Property="VerticalOptions" Value="CenterAndExpand" />
            </Style>
        </ResourceDictionary>
    </ContentPage.Resources>

    <StackLayout>
        <BoxView>
            <BoxView.Color>
                <local:HslColorExtension H="0" S="1" L="0.5" A="1" />
            </BoxView.Color>
        </BoxView>

        <BoxView>
            <BoxView.Color>
                <local:HslColor H="0.33" S="1" L="0.5" />
            </BoxView.Color>
        </BoxView>

        <BoxView Color="{local:HslColorExtension H=0.67, S=1, L=0.5}" />

        <BoxView Color="{local:HslColor H=0, S=0, L=0.5}" />

        <BoxView Color="{local:HslColor A=0.5}" />
    </StackLayout>

 </ContentPage>

, когда я пытаюсь запустить приложение, появляется следующее исключение

markup extension not found for local:HslColorExtension

ПримерКопия найдена по адресу: https://docs.microsoft.com/it-it/xamarin/xamarin-forms/xaml/markup-extensions/creating

Это самый первый пример, заранее спасибо за любую помощь.

1 Ответ

0 голосов
/ 28 января 2019

Вам нужно создать новый класс файлов с именем HslColorExtension в своем проекте, а не создавать класс в файле MainPage, где он не будет распознавать пространство имен или созданный класс.

Простопереместите эту часть в новый файл, и все должно быть настроено.

Вы можете проверить Официальный образец , чтобы увидеть структуру, файлы и способы настройки.

...