如何绑定多边形点的Y值

时间:2013-02-22 18:46:24

标签: windows-phone-7 silverlight-4.0 windows-phone-8

对于WP8应用程序我想将多边形点的Y值绑定到属性。但是,当我在绑定行

处收到错误消息“XamlParseException”时,似乎不可能

这是Xaml代码:

       <Polygon Grid.Row="0" Fill="#66323232">
            <Polygon.Points>
                <Point X="0" Y="0"/>
                    <Point X="0" Y="{Binding HauteurPopUp}"/>
                    <Point X="1" Y="{Binding HauteurPopUp}"/>
                <Point X="1" Y="0"/>
                <Point X="0" Y="0"/>
            </Polygon.Points>
   </Polygon>

这是属性

    public Int32 HauteurPopUp
    {
        get
        {
            return 300;
        }
    }

有什么想法吗?

提前谢谢

1 个答案:

答案 0 :(得分:0)

as I get the error message "XamlParseException"

这不是消息,这是 Type 的异常。

消息可能是Y不是DependencyProperty,因此您无法绑定它。这种绑定永远不会奏效。

即使绑定是可能的,一旦你更新Y的值,就没有更改通知,所以Polygon将不知道它的任何点都有改变。

您需要做的是绑定到Polygon.Points,其中 类型为PointCollection的DependencyProperty。不幸的是,PointCollection没有实现任何可观察的接口,所以你不能只改变一个实例;每当一个点发生变化时,您必须手动或通过设置绑定到PointCollection的属性来创建新的Polygon并更新Polygon.Points

我不会为你做代码,但算法就像这样

  1. 在加载时,创建一个PointCollection,用它应包含的Point的初始平板填充它,并将Polygon.Points设置为等于此集合(直接或通过绑定)< / LI>
  2. 等待更改集合中的任何个人Point(???)
  3. 利润创建一个新的PointCollection,填写(您可以重复使用)Points,并在需要时应用更新,并将Polygon.Points设置为相等对此实例
  4. 转到第2步。