【问题标题】:2 Properties in One Binding?2 个属性在一个绑定中?
【发布时间】:2023-04-04 18:33:01
【问题描述】:

我可以在一次投标中结合 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>

我不仅需要将 Line Start 和 End Points 绑定到点 LeftRight,还需要添加 (Left + Width / 2) 和 (Top + Height / 2)(中心)。

这可能吗?

【问题讨论】:

    标签: .net wpf binding multibinding


    【解决方案1】:

    是的,使用MultiBinding 并在IMultiValueConverter 中实现公式。

    编辑:

    类似这样的东西,只有 X1 使用 MultiBinding,其余的保持不变。

    <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>
    

    【讨论】:

    • 我可以看到,在 textBox 中添加了一个 节点...但是在 元素中我没有实现添加此元素...
    【解决方案2】:

    您可以使用MultiBinding 绑定到多个属性。

    有几个关于这方面的示例和教程 - 例如。 thisthis 似乎告诉你你需要知道什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-14
      • 2021-03-04
      • 1970-01-01
      • 1970-01-01
      • 2017-07-06
      相关资源
      最近更新 更多