从标签页传递数据时标签不显示文本
label not showing text when passing data from Tabbed Page
我是 Xamarin 的新手...当我想在标签中显示描述时遇到问题。我有一个包含不同项目的列表视图,当用户单击一个项目时,应用程序将移动到一个选项卡式页面,其中有两个主要 windows 一个用于描述,另一个用于意见。这里有一张图表。 photo
我将对象从单击的项目传递到选项卡式页面,然后从中将数据传递给它的子项。这是代码
---> 型号
public class Item
{
public String name;
public String description;
public Double price;
public int stock;
public List<String> opinions;
public Item(String name, String description ,Double price, int stock, List<String> opinions)
{
this.name = name;
this.description = description;
this.price = price;
this.stock = stock;
this.opinions = opinions;
}
public override string ToString()
{
return this.name + " " + this.price + " $" + this.stock + " ud";
}
}
---> 单击 listView 中的项目后导航到 TabPage 的事件处理程序。
private async void parent_listView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
{
var item = (Item)e.SelectedItem;
//await Navigation.PushAsync(new TabPage(new Datos(itemList[e.SelectedItemIndex] ), new Opinions(itemList[e.SelectedItemIndex] )));
await Navigation.PushAsync(new TabPage(item));
}
----> 我如何将数据获取到 TabPage 并发送给它的子页面。
public partial class TabPage : TabbedPage
{
Item item;
public TabPage(Item item)
{
InitializeComponent();
this.item = item;
inichildren(item);
}
private void inichildren(Item item)
{
Datos d = new Datos(item);
Opinions o = new Opinions(item);
}
}
---> 最后是我感兴趣的拿督class
public Datos()
{
InitializeComponent();
}
public Datos(Item i)
{
InitializeComponent();
lbl_description.Text = i.description.ToString();
lbl_item_price.Text = i.price.ToString();
}
一切正常,甚至我添加了一些断点以查看我是否在 Datos class 中收到数据并且所有标签变量似乎都指向正确的数据。但问题是,当我在构造函数中初始化标签时,屏幕上没有数据出现......
我是 Xamarin 的新手,不知道为什么会这样。非常感谢您的帮助。
如果您想通过构造函数将数据传递给子页面,则需要在代码中设置页面,而不是XAML。
private void inichildren(Item item)
{
Datos d = new Datos(item);
Opinions o = new Opinions(item);
// since you are adding the child pages here, remove them from the TabbedPage XAML
this.Children.Add(d);
this.Children.Add(o);
}
我是 Xamarin 的新手...当我想在标签中显示描述时遇到问题。我有一个包含不同项目的列表视图,当用户单击一个项目时,应用程序将移动到一个选项卡式页面,其中有两个主要 windows 一个用于描述,另一个用于意见。这里有一张图表。 photo
我将对象从单击的项目传递到选项卡式页面,然后从中将数据传递给它的子项。这是代码
---> 型号
public class Item
{
public String name;
public String description;
public Double price;
public int stock;
public List<String> opinions;
public Item(String name, String description ,Double price, int stock, List<String> opinions)
{
this.name = name;
this.description = description;
this.price = price;
this.stock = stock;
this.opinions = opinions;
}
public override string ToString()
{
return this.name + " " + this.price + " $" + this.stock + " ud";
}
}
---> 单击 listView 中的项目后导航到 TabPage 的事件处理程序。
private async void parent_listView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
{
var item = (Item)e.SelectedItem;
//await Navigation.PushAsync(new TabPage(new Datos(itemList[e.SelectedItemIndex] ), new Opinions(itemList[e.SelectedItemIndex] )));
await Navigation.PushAsync(new TabPage(item));
}
----> 我如何将数据获取到 TabPage 并发送给它的子页面。
public partial class TabPage : TabbedPage
{
Item item;
public TabPage(Item item)
{
InitializeComponent();
this.item = item;
inichildren(item);
}
private void inichildren(Item item)
{
Datos d = new Datos(item);
Opinions o = new Opinions(item);
}
}
---> 最后是我感兴趣的拿督class
public Datos()
{
InitializeComponent();
}
public Datos(Item i)
{
InitializeComponent();
lbl_description.Text = i.description.ToString();
lbl_item_price.Text = i.price.ToString();
}
一切正常,甚至我添加了一些断点以查看我是否在 Datos class 中收到数据并且所有标签变量似乎都指向正确的数据。但问题是,当我在构造函数中初始化标签时,屏幕上没有数据出现...... 我是 Xamarin 的新手,不知道为什么会这样。非常感谢您的帮助。
如果您想通过构造函数将数据传递给子页面,则需要在代码中设置页面,而不是XAML。
private void inichildren(Item item)
{
Datos d = new Datos(item);
Opinions o = new Opinions(item);
// since you are adding the child pages here, remove them from the TabbedPage XAML
this.Children.Add(d);
this.Children.Add(o);
}