2009-09-07 17 views
7

Tengo un Property en mi App.xaml.cs llamado User que contiene los detalles del usuario. He leído here que no puede tener una propiedad de dependencia en la clase de la aplicación.Enlace a la propiedad en App.xaml.cs

Elegí App.cs porque es global para todo el programa y esto se usa para control de acceso, pero cualquier alternativa es bienvenida.

Ahora mi pregunta es cómo puedo enlazar a esta propiedad desde mi UserControls y Windows.

IsEnabled="{Binding Path=User, Converter={StaticResource hasAccessConverter}, ConverterParameter=Mid}" 

Obviamente, esto sólo funciona en una propiedad en la DataContext. Quiero acceder a la propiedad en la aplicación. ¿Alguien me puede mostrar un ejemplo del enlace a la propiedad App.xaml.cs si implemento INotifyChanged?

Gracias -Oliver

Respuesta

22

He leído aquí que no se puede tener una propiedad de dependencia de la clase de aplicación.

De hecho no se puede, porque Application no hereda de DependencyObject. Sin embargo, no es necesario: solo la propiedad target de un enlace debe ser una propiedad de dependencia.

Si desea enlazar a una propiedad de la clase de aplicación, puede hacerlo así:

IsEnabled="{Binding Path=User, Source={x:Static Application.Current}}" 
+0

Muchas gracias. Funciona muy bien. – Oliver

+1

Solo una nota de que esto no se puede hacer en Silverlight. x: Static y x: Type no existen en el mundo de Silverlight. – Oliver

+0

Recuerde implementar INotifyPopertyChanged para ver los cambios a esa propiedad reflejados en la interfaz de usuario. – sergiol

4

Y para acceder a él mediante programación en C# se puede hacer esto:

((App)Application.Current).YourMethod 
((App)Application.Current).YourProperty 
0

Puede vincular declarativamente en Silverlight a Application.Current utilizando un convertidor personalizado.

Ver mi publicación en el blog here

+0

El enlace solitario es [considerada como una respuesta deficiente] (http://stackoverflow.com/faq#deletion) ya que no tiene sentido por sí mismo y no se garantiza que el recurso objetivo esté activo en el futuro. [Sería preferible] (http://meta.stackexchange.com/q/8259) incluir aquí las partes esenciales de la respuesta y proporcionar el enlace de referencia. – j0k

Cuestiones relacionadas