首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Xamarin形成绑定值的强制视图

Xamarin形成绑定值的强制视图
EN

Stack Overflow用户
提问于 2017-02-22 10:15:17
回答 2查看 295关注 0票数 0

我有个风景。我在那有一处可绑定的财产。

代码语言:javascript
运行
复制
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属性,如下所示:

代码语言:javascript
运行
复制
Text="{Binding Order.Name, Source={x:Reference Root}}"

根是视图OrderCard的xaml中的名称。

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

但是我想测量它的大小,甚至在将它添加到页面之前。

代码语言:javascript
运行
复制
var orderCard = new OrderCard { Order = order};
SizeRequest sizeRequest = orderCard.Measure(OrdersContainer.Width/5, OrdersContainer.Height);

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-28 15:22:54

我能够通过不执行属性顺序而是以BindingContext的形式传递订单来解决这个问题。然后,我可以测量视图的大小,而不必将其附加到这样的页面上:

代码语言:javascript
运行
复制
var orderCard = new OrderCard { BindingContext = order};
SizeRequest sizeRequest = orderCard.Measure(widthToTryToFitInTheView,heightToTryToFitInTheView);
票数 0
EN

Stack Overflow用户

发布于 2017-02-22 13:54:23

Binding不需要附加到Page或其他要应用的东西上。

如果您的计算方法是在get_Order上设置断点,您可能会认为它们没有应用,因为从来没有使用过,Xaml加载器直接使用GetValue。确定绑定是否正确应用的通常方法是向Binding中添加一个Binding(不要查找它,您必须自己编写它),并将断点放在Convert方法中。

尽管如此,除非将其添加到屏幕上呈现的页面,否则您不能Measure任何内容。如果在此之前尝试使用Measure,则确实会得到虚拟值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42388678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档