Lo que tengo es un objeto que tiene una propiedad IsReadOnly
. Si esta propiedad es verdadera, me gustaría establecer la propiedad IsEnabled
en un Botón, (por ejemplo), en falso.Cómo enlazar propiedades booleanas inversas en WPF?
Me gustaría creer que puedo hacerlo tan fácilmente como IsEnabled="{Binding Path=!IsReadOnly}"
pero eso no funciona con WPF.
¿Estoy relegado a tener que pasar por todos los ajustes de estilo? Simplemente parece demasiado prolijo para algo tan simple como establecer un bool en el inverso de otro bool.
<Button.Style>
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsReadOnly}" Value="True">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=IsReadOnly}" Value="False">
<Setter Property="IsEnabled" Value="True" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
Hay algunas cosas que tengo que considerar aquí, que probablemente harán a escoger @ respuesta de Pablo sobre éste. Estoy solo cuando estoy programando (por ahora), así que tengo que ir con una solución que "yo" recordará, que usaré una y otra vez. También siento que cuanto menos verbal es mejor, y crear una propiedad inversa es muy explícito, lo que me permite recordarlo fácilmente, así como los futuros desarrolladores (Espero, espero), para poder ver rápidamente lo que estaba haciendo, además de facilitarles que me arrojaran bajo el proverbial autobús. – Russ
Según sus propios argumentos, en mi humilde opinión, la solución de conversión es mejor a largo plazo: solo tiene que escribir el convertidor una vez, y luego puede reutilizarlo una y otra vez. Si elige la nueva propiedad, tendrá que volver a escribirla en todas las clases que la necesiten ... –
Chris, Thomas Quiero que ambos sepan que, aunque elegí la respuesta de Paul como "la respuesta", y no lo hago Creo que es justo cambiar esa opción tan tarde en el juego. Estoy de acuerdo en que ambos tenían razón, y el convertidor se ha vuelto mucho más útil para mí, especialmente cuando uso valores de framework en los que no tengo control. – Russ