2009-04-21 10 views
6

Necesito cambiar dinámicamente la imagen de fondo aplicada a uno de mis botones, pero no puedo entender cómo. Las imágenes se agregan al proyecto y tienen su Acción de compilación establecida en Recurso. He intentado el siguiente:Uso de una imagen de recurso en el código detrás de

buttonUnits.Background = new ImageBrush(new BitmapImage(new Uri("/Images/InchDOWN.png",UriKind.Relative))); 

Esto compila con éxito, pero chocará con decir una DirectoryNotFoundException "No se pudo encontrar una parte de la ruta 'C: \ Images \ InchDOWN.png'."

No deseo que la aplicación busque la imagen en el disco. ¿Cómo puedo usar la imagen como un recurso incrustado? Creo que implica cambiar la Acción de compilación a Recurso incrustado, pero ¿cómo uso este recurso en el código subyacente?

Respuesta

8

Tiene que crear la imagen como un recurso NO un recurso incrustado. El recurso está allí específicamente para ser utilizado por los proyectos de WPF.

utilizarlo en el código de procedimiento:

buttonUnits.Background = new ImageBrush(new BitmapImage(new Uri("pack://application:,,,/Images/InchDOWN.png"))); 

Esto es mucho más fácil de hacer en XAML que recomiendo.

Editar

me olvidó una barra inclinada antes de Imágenes, que podría ser el problema. Aquí hay un MSDN article about pack Uris si necesita más información.

Tal vez deberías publicar una pregunta que indique qué es exactamente lo que intentas lograr y, con un poco de suerte, descubrir diferentes enfoques para tu problema de botón de estado múltiple.

+0

He intentado esto y recibo una excepción NotSupportedException que dice "El prefijo URI no se reconoce". Acepto, configurar la imagen sería más fácil en XAML, pero mi objetivo es una especie de botón multi-estado y no sé cómo hacerlo en XAML. –

Cuestiones relacionadas