我正在创建一个扫描条形码票证的应用程序。启动应用程序时,必须在屏幕上显示可用节目的列表。为了获得所有可用的节目,我正在使用一个向我返回List<Event>
的网络服务。如何创建按钮列表,每个按钮代表xaml.cs内部的显示/事件?单击该按钮时,将显示一个新页面,用户可以在其中扫描该节目中的票证。我对Xamarin.Forms很陌生,我也不了解如何使用分页/内容视图。我已经搜索了很多东西,但是最接近我需要的是:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/xaml/xaml-basics/get-started-with-xaml?tabs=vswin
不幸的是,它仅显示了如何添加一定数量的控件。而不是动态产生的金额。
非常感谢!
答案 0 :(得分:0)
在xaml中,您希望按钮出现的地方插入一个堆栈布局。请记住,您还可以同时使用其“方向”和“间距”属性。所以:
<StackLayout x:Name="MyButtons"/>
然后通过代码隐藏生成您的动态按钮列表。将代码放在InitializeComponent();
之后的构造函数中或其他地方:
var myList = new List<*Event or something*>(); //your list here
MyButtons.Children.Clear(); //just in case so you can call this code several times np..
foreach (var item in myList)
{
var btn = new Button()
{
Text = item.*your property*, //Whatever prop you wonna put as title;
StyleId = item.*your ID property* //use a property from event as id to be passed to handler
};
btn.Clicked += OnDynamicBtnClicked;
MyButtons.Children.Add(btn);
}
添加处理程序:
private void OnDynamicBtnClicked(object sender, EventArgs e)
{
var myBtn = sender as Button;
// who called me?
var myId = myBtn.StyleId; //this was set during dynamic creation
//do you stuff upon is
switch (myId)
{
case "1": //or other value you might have set as id
//todo
break;
default:
//todo
break;
}
}