2010-10-26 8 views
2

J'ai la classe singleton suivante qui contient la propriété suivante:liaison statique Singleton échoue Mystérieusement

public class Manager : INotifyPropertyChanged 
{ 
    public bool IsOnline 
    ... 

    public static Manager Instance 
    ... 
} 

Dans la marge, je suis en train de changer la couleur d'un bouton en fonction de cette propriété en ligne:

<Button.Style> 
<Style TargetType="{x:Type Button}"> 
    <Style.Triggers> 
    <DataTrigger Value="True"> 
    <DataTrigger.Binding> 
    <Binding Source="{x:Static storage:Manager.Instance}" Path="IsOnline"/> 
    </DataTrigger.Binding> 
    <Setter Property="Background" Value="#8000FF00"/> 
    </DataTrigger> 
    </Style.Triggers> 
</Style> 
</Button.Style> 

Cette liaison <Binding Source="{x:Static storage:Manager.Instance}" Path="IsOnline"/> échoue à l'exception:

Impossible de convertir la valeur en att ribute 'Source' à l'objet de type 'System.Windows.Markup.StaticExtension'.

J'ai vérifié quatre fois l'espace de noms "stockage"; Je sais que c'est à la fois référencé et correct. La propriété Instance est statique, donc je ne comprends pas pourquoi cette liaison échouerait. J'ai des liaisons similaires aux propriétés statiques partout dans ce travail très bien.

Des idées?

+0

Échec si vous utilisez ? –

+0

Oui, il échoue dans ce cas aussi. – Charlie

Répondre

1

J'ai construit un exemple d'application qui fait exactement ce que vous décrivez, cela fonctionne sans problèmes. Vous pouvez le télécharger here.

+0

Je vais supposer que c'est quelque chose avec la bibliothèque de contrôle que nous utilisons (Infragistics). Dans mon exemple de code posté, je l'ai simplifié en un bouton, mais il s'agit en fait d'un ToggleButton Infragistics. Je suppose que cela isole le problème, n'est-ce pas? ;) – Charlie

+0

La meilleure façon de savoir est d'obtenir mon exemple de code et de changer le bouton par un ToggleButton Infragistics ... – robertos

0

Avez-vous essayé d'utiliser un ValueConverter pour vérifier la valeur obtenue par l'extension statique? (Voir méthode 2 sur this page)

+0

Il s'agit d'une exception d'exécution générée au démarrage dès que le bouton est chargé. Il ne parvient jamais au convertisseur de valeur. – Charlie

0

J'ai juste eu exactement le même problème étrange! Solution:

Vous DOIT instancier la classe avant d'effectuer des opérations XAML avec cette classe!

Questions connexes