我在Xamarin中工作,但我相信这适用于使用XAML的任何UWP应用程序。
首先,我有两个ContentPages。在第一页上,我想将一些数据传递给第二页,因此我将其作为导航的一部分:
async void BuyTickets(object sender, EventArgs e)
{
var ticketOrderTotal = new TicketOrder
{
OrderTotal = lblOrderAmount.Text,
OrderTotalList = ticketsPrices.Where(o => o.TicketQuantity > 0).ToList<Ticket>()
};
var paymentPage = new PaymentPage();
paymentPage.BindingContext = ticketOrderTotal;
await Navigation.PushAsync(paymentPage);
}
上面在XAML中工作正常。例如,在第二页(PaymentPage)上,我可以像这样引用BindingContext,并且Text属性是正确的:
<Label x:Name="lblOrderAmount" Text="{Binding OrderTotal}" />
我想做的是访问第二页后面C#代码中的“ {Binding OrderTotal}”值。我也找到了一种方法来执行此操作,但是它似乎并不是最佳方法。这是我所处的位置:
<Label x:Name="lblOrderAmount" Text="{Binding OrderTotal}" BindingContextChanged="GetChargeAmount" />
这是标签的代码背后:
public static string m_charge_amount = "";
...
private void GetChargeAmount(object sender, EventArgs e)
{
var lbl = ((Label)sender);
m_charge_amount = lbl.Text;
}
所以我的问题是:还有更好的方法吗?由于XAML似乎扎根于WPF,Silverlight,Xamarin,Windows 8和现在的Windows 10(UWP)中,因此特别难以研究。到处都是。我一直在与框架作斗争,以完成我认为应该很容易做的事情。请帮忙,但要很好。
繁星点点滴滴
相关分类