我有个风景。我在那有一处可绑定的财产。
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}}"
根是视图OrderCard的xaml中的名称。
当我在页面中使用这个视图时,一切正常。
但是我想测量它的大小,甚至在将它添加到页面之前。
var orderCard = new OrderCard { Order = order};
SizeRequest sizeRequest = orderCard.Measure(OrdersContainer.Width/5, OrdersContainer.Height);
但是它给了我错误的数字,因为绑定是不适用的。当视图未附加到页面上时,如何强制应用绑定?
发布于 2017-02-28 15:22:54
我能够通过不执行属性顺序而是以BindingContext的形式传递订单来解决这个问题。然后,我可以测量视图的大小,而不必将其附加到这样的页面上:
var orderCard = new OrderCard { BindingContext = order};
SizeRequest sizeRequest = orderCard.Measure(widthToTryToFitInTheView,heightToTryToFitInTheView);
发布于 2017-02-22 13:54:23
Binding
不需要附加到Page
或其他要应用的东西上。
如果您的计算方法是在get_Order
上设置断点,您可能会认为它们没有应用,因为从来没有使用过,Xaml加载器直接使用GetValue
。确定绑定是否正确应用的通常方法是向Binding
中添加一个Binding
(不要查找它,您必须自己编写它),并将断点放在Convert
方法中。
尽管如此,除非将其添加到屏幕上呈现的页面,否则您不能Measure
任何内容。如果在此之前尝试使用Measure
,则确实会得到虚拟值。
https://stackoverflow.com/questions/42388678
复制相似问题