Не удается получить доступ к x: имени списка из исходного кода в Xamarin

#c# #android #.net #xamarin

#c# #Android #.net #xamarin

Вопрос:

Я не знаю, почему я не могу получить доступ к x: Name списка в файле xaml из кода, содержащегося в какой-либо справке, пожалуйста?

Я новичок в Xamarin и пытаюсь создать базовый проект, я попытался найти в Google некоторые решения, но обнаружил, что мой код правильный, поэтому я не знаю, что теперь делать.

здесь xml-файл Posts.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"
                 x:Class="FavPosts.Posts">
    
        <ListView x:Name="listview" HasUnevenRows="True">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout Orientation="Horizontal" 
                                     Padding="5">
                            <Label  HorizontalOptions="StartAndExpand"/>
                            <Button Text="Favorite"/>
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    
    </ContentPage>
  

а исходный код — Posts.xaml.cs

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Xamarin.Forms;
using Xamarin.Forms.Xaml;

namespace FavPosts
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class Posts : ContentPage
    {
        public Posts()
        {
            InitializeComponent();
        }

        public class Post
        {
            public string Status { get; set; }
            public string Details { get; set; }
        }


        List<Post> Posty = new List<Post> { 
            new Post { Status="f1", Details="D1" },
            new Post { Status="f2", Details="D2"}
            };


        listview.ItemsSource = Posty;
            
    }
}

  

и вот ошибки
и вот ошибки

Ответ №1:

Вы должны поместить класс Post вне Posts! Чтобы создать список «автоматически», вы должны поместить его в конструктор. Но ваша главная проблема в том, что класс Post должен быть снаружи

 namespace FavPosts
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class Posts : ContentPage
    {
        public Posts()
        {
            InitializeComponent();
            List<Post> Posty = new List<Post> { 
               new Post { Status="f1", Details="D1" },
               new Post { Status="f2", Details="D2"}
            };


            listview.ItemsSource = Posty;
        }
     


        
            
    }
    public class Post
    {
            public string Status { get; set; }
            public string Details { get; set; }
    }
}
  

Комментарии:

1. большое спасибо! но, пожалуйста, не могли бы вы сказать мне, почему listview. Itemsources должны быть в конструкторе?

2. Конструктор вызывается каждый раз, когда создается класс Posts. В этом случае он автоматически создаст ваш список с помощью post и заполнит ваш listview

Ответ №2:

инструкция «listview.ItemsSource=Posty1;» имеет неправильное расположение. это должно быть в методе.

 public Posts() {
    InitializeComponent();
    listview.ItemsSource=Posty1;
}
  

Комментарии:

1. большое спасибо, брат! но не могли бы вы сказать мне, плз, почему itemssource должен быть в методе?