我尝试在Xamarin应用程序列表中使用数据绑定。 我关注:https://developer.xamarin.com/guides/xamarin-forms/user-interface/listview/data-and-databinding/。 Visual Studio给我这个错误:CS0103 C#名称" ELementView"在当前上下文中不存在。 我认为这是关于xmlns:xaml fil中的本地问题,但我不知道。
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"
xmlns:local="clr-namespace:App4;assembly=listeElements"
x:Class="App4.Page1"
Title="ListView Demo Page">
<ListView x:Name="ELementView">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell Text="{Binding Name}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ContentPage>
listeElements代码:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace App4
{
public class Element
{
private string element;
public string Name
{
get { return element; }
set { element = value; }
}
ObservableCollection<Element> Elements = new ObservableCollection<Element>();
public void ElementListPage()
{
ELementView.ItemsSource = Elements;
Elements.Add(new Element { Name = "oooo" });
}
}
};
感谢您的帮助
答案 0 :(得分:0)
仅仅给出ListView
一个名字并不意味着你可以从任何地方引用它。您现在可以从ELementView
XAML页面的代码隐藏中引用Page1
。
要到达那里,请打开解决方案窗口,转到Page1.xaml
点击其左侧的箭头,然后双击Page1.xaml.cs
。
在此页面中,您可以执行以下操作:
using System.Collections.ObjectModel;
using Xamarin.Forms;
public Page1()
{
InitializeComponent();
ObservableCollection<Element> Elements = new ObservableCollection<Element>();
ELementView.ItemsSource = Elements;
Elements.Add(new Element { Name = "oooo" });
}
虽然这可行,但它可能不是最好的方法。您正在尝试使用MVVM,这很好!但你可以更进一步。
也许尝试使用像MvvmCross或FreshMvvm这样的MVVM框架。我后来做了一篇博文。你可以找到它here。虽然新版本已经问世,但这应该可以让您从基础开始。
答案 1 :(得分:0)
你也可以使用它:
public Page1()
{
InitializeComponent();
Elemenet e = new Element();
e.ElementListPage();
this.BindingContext = e;
}
但请确保您的ObservableCollection<Element>
有{get; set;}
;
然后你可以像这样添加ItemsSource
- 绑定到你的ListView
:
<ListView ItemsSource="{Binding Elements}">
当您为DataContext
定义Page1
时,它将在您的DataContext中找到一个名为Elements的属性(它是类Element) - 在那里它获取ElementsCollection并添加Name
到你的CellTemplate