这里我定义了我的数据myListOfEmployeeObjects:
public class App : Application
{
public List<Employee> myListOfEmployeeObjects;
public App ()
{
Employee emp1 = new Employee () {
FirstName = "Max",
LastName = "Mustermann",
Twitter = "@fake1"
};
Employee emp2 = new Employee () {
FirstName = "Evy",
LastName = "Mustermann",
Twitter = "@fake2"
};
myListOfEmployeeObjects = new List<Employee> {
emp1, emp2
};
MainPage = new NavigationPage (new EmployeeListPage ());
}
}
然后我有我的XAML,其中我设置了ItemsSource
:
<ListView x:Name="listView"
IsVisible="false"
ItemsSource="{x:Static local:App.myListOfEmployeeObjects}"
ItemSelected="EmployeeListOnItemSelected">
这应该能工作吗?因为我得到了:
Xamarin.Forms.Xaml.XamlParseException:在xmlns中找不到App类型。
public partial class EmployeeListPage : ContentPage {
private ListView listView;
private void InitializeComponent() {
this.LoadFromXaml(typeof(EmployeeListPage)); // here the exception is thrown
listView = this.FindByName <ListView>("listView");
}
}
我该如何设置我的XAML文件的
ItemsSource
?
编辑:
现在我尝试了user2425632的建议,如果我进行以下更改,它就可以工作:
- 将
xmlns:local="clr-namespace:HelloXamarinFormsWorld;assembly=HelloXamarinFormsWorld"
添加到我的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:HelloXamarinFormsWorld;assembly=HelloXamarinFormsWorld"
x:Class="HelloXamarinFormsWorld.EmployeeListPage"
Title="Employee List">
<ContentPage.Content>
当然,您需要更改名称以适应您的项目。
2. 显示列表视图
我删除了
IsVisible
和ItemSelected
。<ListView ItemsSource="{x:Static local:App.myListOfEmployeeObjects}">
- 将所有东西都设为静态的
它必须是静态的,否则你会得到
找不到本地变量 App.myListOfEmployeeObjects 的静态成员
public static List<Employee> myListOfEmployeeObjects { private set; get; }
public static void GetAllEmployees(){
Employee emp1 = new Employee () {
FirstName = "Max",
LastName = "Mustermann",
Twitter = "@fake1"
};
Employee emp2 = new Employee () {
FirstName = "Eva",
LastName = "Mustermann",
Twitter = "@fake2"
};
myListOfEmployeeObjects = new List<Employee> {
emp1, emp2
};
}
public App ()
{
GetAllEmployees ();
MainPage = new NavigationPage (new EmployeeListPage ());
}
ObservableCollections
吗?在这里,只使用了静态的IEnumerable
...(链接) - testingObservableCollections
中看到。尝试这段代码,如果它可以工作,再尝试将其更改为您拥有的常规列表。它们并不难。就像列表一样 :) - SonhjaInitializeComponent()
是什么?2.DataContext
是什么?我将它们注释掉了,否则会出现构建错误。public event PropertyChangedEventHandler PropertyChanged;
缺失,我添加了它。3.我的主窗口是什么?我的主窗口不在XAML中。也许你是在谈论WPF,因为Xamarin版本看起来不同。我从.xaml文件中将其删除。当我尝试运行代码时,我得到了“对象引用未设置为对象实例”的错误。 - testingInitializeComponent()
方法是在创建 WPF 项目时自动生成的,因此您无需修改或编写它。只需查找它并在其后添加DataContext
行即可。DataContext
告诉应用程序,任何数据更改都将在同一上下文中共享。 无论如何...您能否发布完整的代码?请添加.xaml
和.cs
。 - Sonhja