一个绑定中的2个属性?

时间:2010-09-20 12:35:03

标签: .net wpf binding 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" 
          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>

我不仅要将线起点和终点绑定到点,还要添加( Left + Width / 2 < / strong>)和( Top + Height / 2 )(中心)。

这可能吗?

2 个答案:

答案 0 :(得分:3)

是的,使用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>

答案 1 :(得分:2)

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

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