Estoy intentando crear un control personalizado, un botón, que tendrá varios estilos aplicados dependiendo del valor de una propiedad dentro del contexto de datos.Encuadernación para estilos WPF
lo que estaba pensando es utilizar algo similar a:
<Button Style="{Binding Path=ButtonStyleProperty, Converter={StaticResource styleConverter}}" Text="{Binding Path=TextProp}" />
Y en el código ... Implementar un IValueConverter el que hace algo similar al siguiente código en el método ConvertTo
:
switch(value as ValueEnums)
{
case ValueEnums.Enum1:
FindResource("Enum1ButtonStyle") as Style;
break;
... and so on.
}
Sin embargo, no estoy del todo seguro sobre cómo extraer el objeto de estilo e incluso si esto es posible en absoluto ...
Lo que estoy haciendo en t quiere decir que el tiempo es manejar el evento DataContextChanged
, luego asociar un controlador al evento PropertyChanged
del objeto que se vincula al botón, y luego ejecutar la instrucción switch allí.
No es perfecto, pero hasta que encuentre una solución mejor, parece que es lo que tendré que usar.
Gracias Steve - esto hizo exactamente lo que yo estaba tratando de hacer :) –
Sin preocupaciones. Como con todo en WPF, probablemente haya otros 10 modos de hacerlo, pero de esta manera parece bastante limpio y "amigable con el diseñador" :) –
¡Gracias! Estaba tratando de encontrar algo así en este sentido para un convertidor StringToStyle y encontré esto que funcionó muy bien. – Rachel