web-dev-qa-db-fra.com

Liaison à une propriété de classe statique

Je veux lier un texte bloc de texte à une propriété d'une classe statique. Chaque fois que la valeur de propriété de la classe statique change, elle doit se refléter dans le bloc de texte qui se trouve sur l'autre fenêtre ou contrôle personnalisé.

49
Vinod Maurya

Vous pouvez vous lier à N'IMPORTE QUELLE propriété sur une classe statique en utilisant l'extension de balisage x: Static mais si vous n'implémentez aucun suivi des modifications, cela pourrait provoquer des erreurs lors de l'actualisation!

<TextBlock Text="{Binding Source={x:Static sys:Environment.MachineName}}" />
68
rudigrobler

Cela a fonctionné pour moi:

Text="{Binding Source={x:Static MyNamespace:MyStaticClass.MyProperty}, Mode=OneWay}"

Sans pour autant Mode=OneWay J'ai une exception.

18
NoOne

Pour ceux qui utilisent des classes statiques imbriquées pour organiser/séparer les constantes. Si vous devez vous lier à des classes statiques imbriquées, il semble que vous devez utiliser un opérateur plus (+) au lieu de l'opérateur point (.) Pour accéder à la classe imbriquée:

{Binding Source={x:Static namespace:StaticClass+NestedStaticClasses.StaticVar}}

Exemple:

public static class StaticClass
    {
        public static class NestedStaticClasses
        {
            public static readonly int StaticVar= 0;

        }
    }
17
CodyF