Не удается создать xmlns для пространства имен проекта Xamarin.Forms - PullRequest
0 голосов
/ 27 июня 2018

Я сталкиваюсь со следующей ошибкой компиляции при попытке создать новое пространство имен XAML для моего текущего проекта

Error: Failed to resolve assembly: 'TodoQ.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'

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

<ContentPage xmlns:util="clr-namespace:TodoQ.Utilities" 
             xmlns:custom="clr-namespace:TodoQ.Controls" 
             xmlns:swipecards="clr-namespace:SwipeCards.Controls;assembly=SwipeCards.Controls"
             ... x:Class="TodoQ.Views.ItemsPage" Title="{Binding Title}" x:Name="BrowseItemsPage">

Как видите, у меня есть два пространства имен, которые относятся к моему текущему проекту Xamarin.Forms. Пространство имен custom работает, но если я пытаюсь использовать util, я получаю вышеуказанную ошибку. С другой стороны, пространство имен swipecards отлично работает.

Я попытался указать сборку, например xmlns:util="clr-namespace:TodoQ.Utilities;assembly=TodoQ", но, похоже, это не имеет значения.

Мое единственное использование util до сих пор пыталось добавить конвертер:

<Grid.Resources>
    <util:IsZero x:Key="IsZero" />
</Grid.Resources>

Кто-нибудь знает, что я делаю не так? Я практически рву волосы здесь. С WPAM-версией XAML все намного проще, кажется, там все работает.

РЕДАКТИРОВАТЬ: Вот файл утилит в соответствии с просьбой:

using System;
using System.Globalization;
using Xamarin.Forms;

namespace TodoQ.Utilities
{
    public class IsZero : IValueConverter
    {
        public object Convert(object value,
                             Type targetType,
                             object parameter,
                             CultureInfo language)
        {
            return ((int)value) == 0;
        }

        public object ConvertBack(object value,
                             Type targetType,
                             object parameter,
                                  CultureInfo language)
        {
            throw new NotImplementedException();
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Я разобрался в проблеме. Тупая ошибка. Типичный.

Мне не хватало тегов <ResourceDictionary>, и в определении конвертера также было x:Name вместо x:Key.

0 голосов
/ 02 июля 2018

Честно говоря, я думаю, что это что-то другое. Возможно, вы пытаетесь его использовать, ваш код верен:

ItemsPage

<?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:util="clr-namespace:TodoQ.Converters;assembly=TodoQ"  
    x:Class="TodoQ.Views.ItemsPage">
    <StackLayout.Resources>
        <ResourceDictionary>
            <util:IsZero x:Key="IsZero" /> 
        </ResourceDictionary>
    </StackLayout.Resources>
    <ContentPage.Content>
        <StackLayout>
            <Grid HorizontalOptions="CenterAndExpand" >
                <Label Text="Hello World" Grid.Row="{Binding UserL , Converter={StaticResource IsZero}}" Grid.Column="0" />
            </Grid>
        </StackLayout>
    </ContentPage.Content>
</ContentPage>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...