代码之家  ›  专栏  ›  技术社区  ›  Pygmy

将行位置绑定到用户控件中元素的位置

  •  0
  • Pygmy  · 技术社区  · 14 年前

    在某种程度上,我想在画布上添加一行(代码中),其中一个点绑定到用户控件中元素的位置。用户控件是动态的,因此元素可以更改位置。

    对于用户控件,我会得到Canvas.Left和Canvas.Top属性, 但由于我不想绑定到usercontrol而是绑定到它包含的元素, 我该怎么做?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Chris Hagan    14 年前

    我们假设这里有三件事:

    “行”被绑定到 “家长”。

    ValueConverter将返回 父.Left+子.GetPosition(父).Left

    (或者其他精确的查找方法)。重要的是,子对象获取其相对于父对象的位置,并添加父对象的位置。

    (详细阐述后评论)

    <Line X1="50" Y1="50" X2="200" Y2="200" />
    

    这意味着您要对这些坐标说明符中的每一个应用绑定。可能您最好的选择是将X或Y作为ConverterParameter传递给ValueConverter,以节省编写太多重复代码的时间。

    您最初的问题指定您正在查找X1,Y1。我不知道你想让线的另一端是什么,听起来好像是固定的。或者如果它是到另一个元素,你做基本上相同的把戏-这将只对一点有效。现在假设你总是希望另一个点是100100。

    <Line X1="{Binding ElementName=yourTarget, ConverterParameter=X, Converter={StaticResource targetLocationExtractor}}" Y1="{Binding ElementName=yourTarget, ConverterParameter=Y, Converter={StaticResource targetLocationExtractor}}" X2="200" Y2="200" />