Xamarin Forms强制视图绑定值

时间:2017-02-22 10:15:18

标签: xamarin xamarin.forms

我有一个观点。我有一个可绑定的属性。

public partial class OrderCard : ContentView
{
    public static readonly BindableProperty OrderProperty = BindableProperty.Create(nameof(Order), typeof(Order), typeof(OrderCard), null);

    public Order Order
    {
        get { return (Order)GetValue(OrderProperty); }
        set { SetValue(OrderProperty, value); }
    }

    public OrderCard()
    {
        InitializeComponent();
    }
}

在此视图的xaml中,我可以像这样绑定Order属性:

Text="{Binding Order.Name, Source={x:Reference Root}}"

Root是OrderCard视图的xaml中的名称

当我在页面中使用此视图时,一切正常。

但我想在将其添加到页面之前测量它的大小。

var orderCard = new OrderCard { Order = order};
SizeRequest sizeRequest = orderCard.Measure(OrdersContainer.Width/5, OrdersContainer.Height);

但它给了我错误的数字,因为没有应用绑定。 如何在视图未附加到页面时强制应用绑定?

1 个答案:

答案 0 :(得分:0)

我能够通过不执行属性Order但将订单作为BindingContext传递来解决此问题。然后我可以测量视图的大小而不将其附加到这样的页面:

var orderCard = new OrderCard { BindingContext = order};
SizeRequest sizeRequest = orderCard.Measure(widthToTryToFitInTheView,heightToTryToFitInTheView);