我有一个观点。我有一个可绑定的属性。
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);
但它给了我错误的数字,因为没有应用绑定。 如何在视图未附加到页面时强制应用绑定?
答案 0 :(得分:0)
我能够通过不执行属性Order但将订单作为BindingContext传递来解决此问题。然后我可以测量视图的大小而不将其附加到这样的页面:
var orderCard = new OrderCard { BindingContext = order};
SizeRequest sizeRequest = orderCard.Measure(widthToTryToFitInTheView,heightToTryToFitInTheView);