一个绑定中有 2 个属性?

发布于 2024-09-24 07:22:22 字数 822 浏览 7 评论 0原文

我可以在一次投标中合并 2 个元素吗?

<Canvas>
    <Ellipse Fill="Black" x:Name="dot1" Width="16" Height="16" Canvas.Left="124" Canvas.Top="133"/>
    <Ellipse Fill="Black" x:Name="dot2" Width="16" Height="16" Canvas.Left="221" Canvas.Top="40"/>
    <Line Stroke="Black" x:Name="line1" 
          X1="{Binding ElementName=dot1, Path=(Canvas.Left)}" 
          Y1="{Binding ElementName=dot1, Path=(Canvas.Top)}"

          X2="{Binding ElementName=dot2, Path=(Canvas.Left)}" 
          Y2="{Binding ElementName=dot2, Path=(Canvas.Top)}"
          />
</Canvas>

我不仅需要将线起点和终点绑定到点 LeftRight,还需要添加 (Left + Width / 2< /code>) 和 (顶部 + 高度 / 2)(中心)。

这可能吗?

Can I combine 2 elements in one biding?

<Canvas>
    <Ellipse Fill="Black" x:Name="dot1" Width="16" Height="16" Canvas.Left="124" Canvas.Top="133"/>
    <Ellipse Fill="Black" x:Name="dot2" Width="16" Height="16" Canvas.Left="221" Canvas.Top="40"/>
    <Line Stroke="Black" x:Name="line1" 
          X1="{Binding ElementName=dot1, Path=(Canvas.Left)}" 
          Y1="{Binding ElementName=dot1, Path=(Canvas.Top)}"

          X2="{Binding ElementName=dot2, Path=(Canvas.Left)}" 
          Y2="{Binding ElementName=dot2, Path=(Canvas.Top)}"
          />
</Canvas>

I need not only to bind the Line Start and End Points to the dots Left and Right, but the addition of (Left + Width / 2) and (Top + Height / 2) (centers).

Is that possible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

饮惑 2024-10-01 07:22:22

是的,使用 MultiBinding 并在 IMultiValueConverter

编辑:

类似这样的事情,只有X1使用多重绑定,其余的保持不变。

<Canvas>
    <Ellipse Fill="Black" x:Name="dot1" Width="16" Height="16" Canvas.Left="124" Canvas.Top="133"/>
    <Ellipse Fill="Black" x:Name="dot2" Width="16" Height="16" Canvas.Left="221" Canvas.Top="40"/>
    <Line Stroke="Black" x:Name="line1" 
    Y1="{Binding ElementName=dot1, Path=(Canvas.Top)}"

    X2="{Binding ElementName=dot2, Path=(Canvas.Left)}" 
    Y2="{Binding ElementName=dot2, Path=(Canvas.Top)}">
        <Line.X1>
            <MultiBinding Converter="{StaticResource myMultiValueConverter}">
                <Binding Path="(Canvas.Top)"/>
                <Binding Path="(Canvas.Left)"/>
            </MultiBinding>
        </Line.X1>
    </Line>
</Canvas>

Yes, use a MultiBinding and implement the formula in a IMultiValueConverter.

Edit:

Something like this where only X1 uses the MultiBindingand the rest are unchanged.

<Canvas>
    <Ellipse Fill="Black" x:Name="dot1" Width="16" Height="16" Canvas.Left="124" Canvas.Top="133"/>
    <Ellipse Fill="Black" x:Name="dot2" Width="16" Height="16" Canvas.Left="221" Canvas.Top="40"/>
    <Line Stroke="Black" x:Name="line1" 
    Y1="{Binding ElementName=dot1, Path=(Canvas.Top)}"

    X2="{Binding ElementName=dot2, Path=(Canvas.Left)}" 
    Y2="{Binding ElementName=dot2, Path=(Canvas.Top)}">
        <Line.X1>
            <MultiBinding Converter="{StaticResource myMultiValueConverter}">
                <Binding Path="(Canvas.Top)"/>
                <Binding Path="(Canvas.Left)"/>
            </MultiBinding>
        </Line.X1>
    </Line>
</Canvas>
指尖凝香 2024-10-01 07:22:22

您可以使用 MultiBinding

有几个关于此的示例和教程 - 例如 this似乎告诉您需要了解什么。

You can bind to multiple properties using a MultiBinding.

There are several examples and tutorials on this out there - e.g. this and this seems to tell you what you need to know.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文