views:

51

answers:

1

I'm once again in WPF binding hell :) I have a public class (Treatment) as follows:

public class Treatment()  
{  
...    
    public Ticker SoakTimeActual;   
...  
}

Within Ticker is a Dependency Property:

public class Ticker : FrameworkElement
{     
    // Value as string
    public static readonly DependencyProperty DisplayIntervalProperty = DependencyProperty.Register("DisplayInterval", typeof(string), typeof(Ticker), null);
    public string DisplayInterval
    {
        get { return (string)GetValue(DisplayIntervalProperty); }
        set { SetValue(DisplayIntervalProperty, value); }
    }
    ...
}

In my app, a single Treatment object is created and is meant to be easily accessible in XAML (in app.xaml ):

<Application.Resources>
   <ResourceDictionary>
      <u:Treatment
         x:Key="currentTreatment" />
   </ResourceDictionary>
</Application.Resources>

Now, I need to bind to the DisplayInterval dependency property of SoakTimeActual to display this text in its current state. Here is my attempt, which doesn't work:

<TextBlock              
   Text="{Binding Source={StaticResource currentTreatment}, Path=SoakTimeActual.DisplayInterval}"/>

This, of course, compiles ok, but will not display anything. I'm assuming I've made a mistake with change notification or DataContext or both.

Any insight is appreciated!

+3  A: 

WPF binding only operates on properties, not fields.

Therefore, you need change your SoakTimeActual field to a property, like this:

public class Treatment
{  
...    
    public Ticker SoakTimeActual { get; set; }
...  
}
SLaks
Works! Right on.
Tim