Как управлять изображениями в кроссплатформенном приложении? - PullRequest
0 голосов
/ 25 января 2019

Я создаю кроссплатформенный демонстрационный проект, но у меня возникла проблема при попытке отладки приложения на ios symulator. Сначала я не смог соединить свой Mac с Visual Studio, но я просто отправил все файлы как rar и открыл на Mac. С проектом Android все в порядке, но при попытке запустить приложение на симуляторе iphone выдается исключение, которое

System Exception : Image: file"bgtest5.jpg" not found in app bundle. 

(версия Android работает нормально на этом Mac). В соответствии с моим вопросом я помещаю все изображения, которые мое приложение должно загрузить в папку ресурсов в решении ios, помечаю их как «bundleResources», я вижу в выводе отладчика, что моя наблюдаемая коллекция читается, а затем генерируется исключение для изображения ...

MyModel класс

    [PrimaryKey]
    public int PersonId { get; set; }
    public string Name { get; set; }
    public string Surname { get; set; }
    public string Description { get; set; }
    public string PersonBackgroundImage { get; set; }
    public double ProgressCounter { get; set; }

ListViewModel class

            var personList = new List<PersonViewModel>
        {
             new PersonViewModel()
            {
                Name="Test", Surname="Test", Description= "TEsT", Background = "bgtest6.jpg", ProgressCounter =0.1, SavedClicked=0,Weight=1
            },
            new PersonViewModel()
            {
                Name="Test", Surname="Test", Description= "TEsT",Background = "bgtest6.jpg", ProgressCounter =0.1, SavedClicked=0,Weight=30
            },
            new PersonViewModel()
            {
                Name="Test", Surname="Test", Description= "TEsT",Background = "bgtest6.jpg", ProgressCounter =0.2, SavedClicked=0
            },
            new PersonViewModel()
            {
                Name="Test", Surname="Test", Description= "TEsT",Background = "bgtest6.jpg", ProgressCounter =0.3, SavedClicked=0,Weight=27
            },
        };
        Persons = new ObservableCollection<PersonViewModel>(personList);

PersonPage

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="CommandDemo.Views.PersonPage"
         BackgroundImage="{Binding Person.Background}">
<ContentPage.Content>
    <StackLayout>
        <Label Text="{Binding Person.Description}"
               VerticalOptions="Center"
               HorizontalOptions="Center"
               HorizontalTextAlignment="Center"
               VerticalTextAlignment="Center"
               FontSize="Medium"/>
        <Label Text="{Binding Person.ProgressCounter}"
               VerticalOptions="Center"
               HorizontalOptions="Center"
               HorizontalTextAlignment="Center"
               VerticalTextAlignment="Center"
               FontSize="Medium"/>
    </StackLayout>
</ContentPage.Content>

MyListPage

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="CommandDemo.Views.PersonListPage"
         BackgroundImage="bgtest5.jpg">
<NavigationPage.TitleView>
    <StackLayout Orientation="Horizontal">
        <Button Text="Numbers"
                Command="{Binding NavigateSumPageCommand}"
                CommandParameter="{Binding .}"/>
    </StackLayout>
</NavigationPage.TitleView>
<ContentPage.Content>
    <StackLayout Padding="10"
                 Margin="10">
        <ListView x:Name="personList"
                  ItemsSource="{Binding Persons}"
                  HasUnevenRows="True"
                  >
            <!--SelectedItem="{Binding SelectedPerson}"-->
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>

                        <StackLayout>
                            <StackLayout.GestureRecognizers>
                                <TapGestureRecognizer NumberOfTapsRequired="1"
                                                      Command="{Binding Source={x:Reference personList},Path=BindingContext.NavigateCommand}"
                                                      CommandParameter="{Binding .}"/>
                            </StackLayout.GestureRecognizers>
                            <Label Text="{Binding Name}"
                               HorizontalTextAlignment="Center"
                               VerticalTextAlignment="Center"
                               HorizontalOptions="Center"
                               VerticalOptions="Center"
                               Margin="5,5,5,5"/>
                            <ProgressBar Progress="{Binding ProgressCounter}"/>
                            <Button Text="Add Progress"
                                    Command="{Binding Source={x:Reference personList},Path=BindingContext.IncreaseProgressCommand}"
                                    CommandParameter="{Binding .}"/>
                        </StackLayout>

                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
        <Label Text="{Binding SumCollected}"
               VerticalTextAlignment="Center"
               HorizontalTextAlignment="Center"
               VerticalOptions="Center"
               HorizontalOptions="Center"/>
        <Label Text="{Binding PieceCollected}"
               VerticalTextAlignment="Center"
               HorizontalTextAlignment="Center"
               VerticalOptions="Center"
               HorizontalOptions="Center"/>
        <Button Text="Numbers"
                Command="{Binding NavigateSumPageCommand}"
                CommandParameter="{Binding .}"/>
    </StackLayout>
</ContentPage.Content>

Все привязки работают как положено на проекте Android. Проект IOS не может быть загружен из-за исключительной ситуации при загрузке приложения. Я пропускаю какой-то конвертер значений для изображений, работающих над проектом ios или как? За любую помощь в этом или руководство, как достичь моих целей, я был бы очень признателен! :) Заранее спасибо

Изменить: 1 После удаления строки BackgroundImage = "bgtest5.jpg" проект загружается на белом фоне и все связанные изображения отображаются прямо сейчас. Где проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...