Sé que este es un hilo antiguo, pero he encontrado y he encontrado una solución a este problema. Pude usar la sugerencia de Aland Li, encontré here. No es tan genérico como en CSS, pero si conoces el tipo de elemento principal, esto funciona muy bien incluso en un estilo.
Aquí hay un ejemplo de cómo lo usé. Tengo un control TextBox que se ilumina con un "color de resaltado" cuando tiene foco. Además, quería que su control Label asociado también se iluminara cuando el TextBox tenía foco. Así que escribí un disparador para el control Label que lo iluminaba de manera similar a como lo hacía el control TextBox. Este desencadenador se desencadena por una propiedad adjunta personalizada llamada IsFocusedByProxy. Entonces necesité unir el IsFocusedByProxy de la Etiqueta al IsFocused del TextBox. Así que he usado esta técnica:
<Grid x:Name="MaxGrid">
<Label x:Name="MaxLabel"
Content="Max:"
c5:TagHelper.IsFocusedByProxy="{Binding
Path=Children[1].IsFocused,
RelativeSource={RelativeSource AncestorType=Grid}}"
/>
<c5:TextBoxC5Mediator x:Name="MaxTextBox"
DataContext="{Binding ConfigVm.Max_mediator}" />
</Grid>
En este punto se puede pensar que no es mejor que el uso de sólo ElementName en la unión. Pero la diferencia es que ahora puedo mover esta unión en un estilo de reutilización:
<Setter Property="C5_Behaviors:TagHelper.IsFocusedByProxy"
Value="{Binding Path=Children[1].IsFocused,
RelativeSource={RelativeSource AncestorType=Grid}}" />
Y ahora puedo cuando tiene una vista completa de estas ocurrencias, como esto (he fijado los estilos necesarios para se aplicará de forma implícita, así que por eso no hay margen de beneficio demostrado que establece los estilos):
<Grid x:Name="MaxGrid">
<Label x:Name="MaxLabel"
Content="Max:" />
<c5:TextBoxC5Mediator x:Name="MaxTextBox"
DataContext="{Binding ConfigVm.Max_mediator}" />
</Grid>
<Grid x:Name="MinGrid">
<Label x:Name="MinLabel"
Content="Min:" />
<c5:TextBoxC5Mediator x:Name="MinTextBox"
DataContext="{Binding ConfigVm.Min_mediator}" />
</Grid>
<Grid x:Name="StepFactorGrid">
<Label x:Name="StepFactorLabel"
Content="Step Factor:" />
<c5:TextBoxC5Mediator x:Name="StepFactorTextBox"
DataContext="{Binding ConfigVm.StepFactor_mediator}" />
</Grid>
<!-- ... and lots more ... -->
Lo que me da estos resultados:
Antes de cualquier texto Las cajas han de enfoque:
con diferentes cuadros de texto que recibe el foco:
Eso es algo de lo que estoy probable que va a hacer. El problema es que hay varias propiedades y conversores que estoy buscando vinculantes, por lo que se necesita mucha copia y más para hacer esto para cada propiedad. Estoy pensando en vincular por ElementName a la Etiqueta de Bloqueo de Texto y luego usar RelativeSource Self para obtener las propiedades que necesito. – Eclipse
¿Esto alguna vez funcionó para ti? – Carlo
Terminé creando un control de usuario que manejaba los casos que necesitaba. Fue simplemente más fácil. – Eclipse