Pregunta

¿Puedo combinar 2 elementos en una 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>

Necesito no sólo para unir los puntos de la línea de inicio y fin de los puntos izquierdo y derecho , pero la adición de ( Left + Width / 2 ) y ( Top + Height / 2 ) (centros).

¿Es posible?

¿Fue útil?

Solución

Sí, utilizar un MultiBinding y aplicar la fórmula en una IMultiValueConverter .

Editar

Algo como esto donde sólo X1 utiliza el MultiBindingand el resto son sin cambios.

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

Otros consejos

Se puede unir a varias propiedades utilizando un MultiBinding .

Hay varios ejemplos y tutoriales en esta ahí fuera - por ejemplo, este y esta parece que le diga lo que necesita saber.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top