无法从 Xamarin 中的代码访问 x:列表的名称

Posted

技术标签:

【中文标题】无法从 Xamarin 中的代码访问 x:列表的名称【英文标题】:Can't Access x:Name of the list from the code behind in Xamarin 【发布时间】:2021-01-09 08:18:00 【问题描述】:

我不知道为什么我不能从任何帮助后面的代码访问 xaml 文件中列表的 x:Name 吗?

我是 Xamarin 的新手,我正在尝试构建一个基本项目,我尝试用谷歌搜索一些解决方案,但我发现我的代码是正确的,所以我现在不知道该怎么做。

这里是 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; 
    

【讨论】:

非常感谢!但请你能告诉我为什么是listview。 Itemsources 应该在构造函数中? 每次创建 Posts 类时都会调用构造函数。在这种情况下,它会自动使用帖子创建您的列表并填充您的列表视图【参考方案2】:

语句“listview.ItemsSource=Posty1;”位置错误。它应该在一个方法中。

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

【讨论】:

非常感谢兄弟!但是你能告诉我为什么 itemssource 应该在一个方法中吗?

以上是关于无法从 Xamarin 中的代码访问 x:列表的名称的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin Forms - 从父页面代码隐藏的列表视图中访问控件

Xamarin PCL 项目中的 HttpClient 访问失败

无法从UIKit.UIImage转换为ZXing.LuminanceSource - 2017年Visual Studio中的Xamarin iOS

如何从列表Xamarin Forms中获取所选项目?

为啥我无法从我的 Xamarin.Forms UWP 应用程序访问 DownloadsFolder,并获得 System.UnauthorizedAccessException?

如何将上下文菜单添加到 xamarin UWP 应用程序中的列表项?