У меня есть такой простой Xaml:

...
    <ContentPage.Content>
        <Grid Padding="0,40,0,0">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>

            <Image  Grid.Row ="0" Source="iMobile"
                        HorizontalOptions="CenterAndExpand"
                        WidthRequest="260" HeightRequest="129"/>
        </Grid>
    </ContentPage.Content>

Изображение iMobile появляется на Android и ios. Для Android у меня есть разные размеры изображения в отдельных папках с возможностью рисования. Для ios у меня есть изображения разных размеров в каталоге Assets.

Я попытался сделать то же самое для UWP, но, похоже, ничего не работает. Вот некоторые из вещей, которые я пробовал делать:

  • Я добавил изображение в корневой каталог проекта UWP, но это не работает.

  • Я добавил изображение в каталог Assets, но это не сработало.

  • Я попытался добавить .scale-100, .scale-200 и .scale-400 к имени файла изображения (пробовал их все по отдельности), но это не сработало.

  • Я также попытался поместить изображение в каталог с именем scale-100 , но это тоже не сработало.

Есть идеи, что может вызвать мою проблему и как я могу это исправить? Очень расстраивает то, что что-то столь тривиальное отнимает у меня так много времени.

Обновление: Я попытался использовать URL-адрес в качестве источника вместо iMobile, и это не работает и для UWP, но работает для Android, и почему это может быть?

1
Kikanye 14 Окт 2020 в 00:30

1 ответ

Лучший ответ

Как сделать так, чтобы изображения отображались в версии UWP моего приложения Xamarin.Forms

См. Изображения в Xamarin.Forms < / a> официальный документ. Поддержка формы Xamarin Собственные разрешения.

Имена файлов изображений UWP могут быть дополнены суффиксом .scale-xxx перед расширением файла, где xxx - это процент масштабирования, применяемый к ресурсу, например myimage.scale-200.png. Затем на изображения можно ссылаться в коде или XAML без модификатора масштаба, например просто myimage.png. Платформа выберет ближайший подходящий масштаб актива на основе текущего DPI дисплея.

Если вы поместили файл изображения в папку UWP Assets, вы можете использовать следующий xaml. И обратите внимание, что цвет пустого файла iamge приложения xamarin по умолчанию - белый, нам нужно установить черный фон, чтобы выделить их.

<Grid BackgroundColor="Black">
    <Image>
        <Image.Source>
            <OnPlatform x:TypeArguments="FileImageSource">
                <On Platform="UWP" Value="Assets/LargeTile.png" />
                <On Platform="iOS" Value="LargeTile.png" />
                <On Platform="Android" Value="LargeTile.png" />
            </OnPlatform>
        </Image.Source>
    </Image>
</Grid>
2
Nico Zhu - MSFT 14 Окт 2020 в 07:32