Tengo una pregunta de WPF para principiantes.¿Es posible suministrar un convertidor de tipo para un recurso estático en WPF?
imaginar mi control de usuario tiene una declaración de espacio de esta manera:
xmlns:system="clr-namespace:System;assembly=mscorlib"
Y tengo los recursos para el control de usuario como esto:
<UserControl.Resources>
<system:Int32 x:Key="Today">32</system:Int32>
</UserControl.Resources>
Y a continuación, en algún lugar de mi control de usuario que tiene este :
<TextBlock Text="{StaticResource Today}"/>
Esto causará un error porque Today
se define como un recurso entero, pero la propiedad Text espera una cadena. Este ejemplo es artificial, pero con suerte ilustra la pregunta.
La cuestión es que, a menos que mi tipo de recurso coincida exactamente con el tipo de propiedad, ¿hay alguna manera de proporcionar un conversor para mis recursos? Algo así como IValueConverter para enlaces o un convertidor de tipo.
Gracias!
Perfecto, gracias por la información. – Notre
¿Qué pasa si quiere obtener los componentes de color de un StatisResource que es un Color? (Por ejemplo, para cambiar la opacidad del color StaticResource). Hacer lo siguiente no parece funcionar: –
No funciona porque solo puede establecer un enlace en un DependencyProperty de un DependencyObject. El color es una estructura. Puede crear su propio objeto envoltorio de color, que es DepdendencyProperty, y expone las propiedades A, R, G, B y Color que son ellos mismos DP. Cambiar cualquiera de las propiedades actualizaría la propiedad Color, y al cambiarla se actualizarían todas las demás. –