2010-08-04 10 views
0

Je suis à nouveau dans l'enfer WPF contraignant :) J'ai une classe publique (Treatment) comme suit:WPF - Comment se lier à une propriété de dépendance de classe personnalisée

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

Au sein Ticker est une propriété de dépendance :

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); } 
    } 
    ... 
} 

dans mon application, un seul objet Treatment est créé et est destiné à être facilement accessible en XAML (en app.xaml):

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

Maintenant, je dois lier à la propriété de dépendance DisplayInterval de SoakTimeActual pour afficher ce texte dans son état actuel. Voici ma tentative, qui ne fonctionne pas:

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

Ceci, bien sûr, compile bien, mais n'affiche rien. Je suppose que je l'ai fait une erreur avec notification de changement ou DataContext ou les deux.

Toute idée est appréciée!

Répondre

3

WPF de liaison ne fonctionne que sur les propriétés, pas de champs.

Par conséquent, vous devez changer votre champ SoakTimeActual à une propriété, comme celui-ci:

public class Treatment 
{ 
...  
    public Ticker SoakTimeActual { get; set; } 
... 
} 
+0

Works! Droit sur. – BabaBooey