在代码隐藏中访问XAML绑定

我在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)中,因此特别难以研究。到处都是。我一直在与框架作斗争,以完成我认为应该很容易做的事情。请帮忙,但要很好。


尚方宝剑之说
浏览 126回答 1
1回答

繁星点点滴滴

而不是PageAset&nbsp;PageB's&nbsp;BindingContext,而是将ticketOrderTotal对象作为PageB's构造函数的参数传递。然后PageB可以设置它自己BindingContext的ticketOrderTotal对象,并保留对该对象的本地引用。
打开App,查看更多内容
随时随地看视频慕课网APP