views:

978

answers:

2

Hello,

I am new to WPF and the below question may look silly for many, please pardon me.

How can I create a dependency property in app.xaml.cs?

Actually, I tried to created it. The below code,

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

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

throws the below compile time errors:

The name 'GetValue' does not exist in the current context

The name 'SetValue' does not exist in the current context

Can anybody help me in this?

Thank you!

A: 

You class that contains dependency properties must inherit from DependencyObject.

Jeremiah Morrill
So, I cannot have dependency property in App.xaml.cs.
Vijay
You can add a helper class that inherits from DepObj as a property of your App class.
Jeremiah Morrill
+6  A: 

DependencyProperties can only be created on DependencyObjects, and since Application (which your App class inherits from) doesn't implement it, you can't create a DependencyProperty directly on the App class.

I assume you want this property to support binding. If this is the case, you have two options:

  1. Implement INotifyPropertyChanged in App.xaml.cs
  2. Create a DependencyObject derived class with your properties on it, and expose it as a standard read-only property of your App. The properties can then be successfully bound by "dotting-down" to them. i.e if your new property is called Properties, you can bind like so:
   <TextBlock Text="{Binding Properties.Temp}" />

If the property needs to be the target of a Binding, then option #2 is your best bet.

Abe Heidebrecht
Right guess! Option-2 is what I was looking for.It helped... Thank you!
Vijay