#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 должен быть в методе?