c# - 我想显示一个列表,但页面是空的
问题描述
我是 Xamarin 的新手,尝试了 2 个小时后,我无法让我的页面正常工作......
这个想法是在 SessionsList.cs 中获取一个名称列表,如果 ObservableCollection 更改,它将自动更新,我没有收到任何错误,但应该显示列表的页面为空
应用程序.xaml.cs
using Xamarin.Forms;
namespace BetterApp
{
public partial class App : Application
{
public static bool IsUserLoggedIn { get; set; }
public App()
{
if (!IsUserLoggedIn)
{
MainPage = new NavigationPage(new MainPage());
}
else
{
MainPage = new NavigationPage(new SessionsList());
}
}
protected override void OnStart()
{
}
protected override void OnSleep()
{
}
protected override void OnResume()
{
}
}
}
MainPage.xaml.cs
using System.ComponentModel;
using Xamarin.Forms;
namespace BetterApp
{
[DesignTimeVisible(false)]
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
var lblUser = new Label
{
Text = "Username:"
};
var txtUser = new Entry
{
Placeholder = "Enter username"
};
var lblPass = new Label
{
Text = "Password:"
};
var txtPass = new Entry
{
Placeholder = "Enter password",
IsPassword = true
};
var btnLogin = new Button
{
Text = "LOGIN"
};
Content = new StackLayout
{
Padding = 30,
Spacing = 10,
Children = { lblUser, txtUser, lblPass, txtPass, btnLogin }
};
btnLogin.Clicked += async (sender, e) =>
{
if (Login.login(txtUser.Text, txtPass.Text))
{
App.IsUserLoggedIn = true;
Navigation.InsertPageBefore(new SessionsList(), this);
await Navigation.PopAsync();
}
else
{
await DisplayAlert("Error", "Bad login details", "OK");
}
};
}
}
}
会话列表.cs
using System.Collections.ObjectModel;
using Xamarin.Forms;
namespace BetterApp
{
class SessionsList : ContentPage
{
ObservableCollection<Sessions> session = new ObservableCollection<Sessions>();
public SessionsList()
{
App.IsUserLoggedIn = false;
var list = new ListView();
list.ItemsSource = session;
var btnRefresh = new Button
{
Text = "REFRESH"
};
btnRefresh.Clicked += (sender, e) =>
{
UpdateSessions();
};
}
public void UpdateSessions()
{
session.Add(new Sessions { name = "Rob Finnerty" });
}
}
}
会话.cs
namespace BetterApp
{
class Sessions
{
public string name { get; set; }
}
}
我遗漏了任何细节,请告诉我以改进我的问题:)
解决方案
您正在创建 UI 元素,但没有对它们做任何事情
var list = new ListView();
list.ItemsSource = session;
var btnRefresh = new Button
您需要将它们添加到页面中,以便它们可见。因为您有多个元素,所以您需要使用Layout
某种类型的 a
var layout = new StackLayout();
layout.Children.Add(list);
layout.Children.Add(btnRefresh);
// add to the page's Content
this.Content = layout;
推荐阅读
- python - 如何验证 s3 中的文件是否在 boto3 中完全下载?
- loops - 仅返回数组中的非零元素
- docker - nginx 响应 HTTPS 但不响应 HTTP
- amazon-web-services - 使用适用于 Java 的 AWS 开发工具包生成预签名 URL
- javascript - 尝试解析仅允许数字的脚本在 Internet Explorer 11 中不起作用
- javascript - 将 for 循环转换为 forEach 循环时重新分配变量值的问题
- javascript - 你能阻止 3D 触摸但不能点击并按住保存吗?
- amazon-web-services - 当我从邮递员发送消息时如何接收参数
- android - 用于管理 Play 控制台上的测试人员的 GSuite 组
- c++ - 矢量 emplace_back 要求和 unique_ptr 成员