2009-08-28 22 views
7

Soy nuevo en WPF y la siguiente pregunta puede parecer tonta para muchos, por favor perdónenme.Propiedad de dependencia en app.xaml.cs

¿Cómo puedo crear una propiedad de dependencia en app.xaml.cs?

En realidad, traté de crearlo. El código de abajo,

public static DependencyProperty TempProperty = 
     DependencyProperty.Register("Temp", typeof(string), typeof(App)); 

    public string Temp 
    { 
     get { return (string)GetValue(TempProperty); } 
     set { SetValue(TempProperty, value); } 
    } 

lanza los errores de tiempo por debajo de compilación:

El nombre 'GetValue' no existe en el contexto actual

El nombre 'FijarValor' no existe en el contexto actual

¿Alguien puede ayudarme en esto?

¡Gracias!

+2

Ninguna pregunta es tonta. Al menos, no es tu :) – shahkalpesh

+0

oh ... ¡gracias! :) – Vijay

Respuesta

13

DependencyProperties solo se pueden crear en DependencyObjects, y dado que la Aplicación (de la cual hereda su clase de aplicación) no la implementa, no puede crear DependencyProperty directamente en la clase de la Aplicación.

Supongo que desea que esta propiedad sea compatible con el enlace. Si este es el caso, usted tiene dos opciones:

  1. Implementar INotifyPropertyChanged en App.xaml.cs
  2. Crear una clase derivada DependencyObject con sus propiedades en él, y exponerlo como una propiedad de sólo lectura de la norma tu aplicación Las propiedades se pueden enlazar exitosamente con "puntear hacia abajo". es decir si su nueva propiedad se llama Propiedades, puede unirse de este modo:
<TextBlock Text="{Binding Properties.Temp}" /> 

Si la propiedad tiene que ser el objetivo de un enlace, a continuación, la opción # 2 es la mejor opción.

+0

¡Adivinar correctamente! La opción 2 es lo que estaba buscando. Ayudó ... ¡Gracias! – Vijay

1

Su clase que contiene propiedades de dependencia debe heredar de DependencyObject.

+0

Entonces, no puedo tener propiedad de dependencia en App.xaml.cs. – Vijay

+0

Puede agregar una clase auxiliar que herede de DepObj como una propiedad de su clase de aplicación. –

Cuestiones relacionadas