4 votes

Wpf DependencyProperty n'accepte pas de valeur par défaut pour short

J'essayais d'utiliser cette propriété de dépendance dans mon code, mais cela me donne une erreur indiquant que le type de valeur par défaut ne correspond pas au type de propriété 'MyProperty'. Mais short devrait accepter 0 comme valeur par défaut.

Si j'essaie de lui donner null comme valeur par défaut, cela fonctionne, même si c'est un type non nullable. Comment cela se fait-il...

public short MyProperty
{
   get { return (short)GetValue(MyPropertyProperty); }
   set { SetValue(MyPropertyProperty, value); }
}

Utilisation d'une DependencyProperty comme magasin de sauvegarde pour MyProperty. Cela permet l'animation, le style, la liaison, etc...

public static readonly DependencyProperty MyPropertyProperty =
    DependencyProperty.Register(
        "MyProperty",
        typeof(short),
        typeof(Window2),
        new UIPropertyMetadata(0)
    );

13voto

Abe Heidebrecht Points 16417

Le problème est que le compilateur C# interprète les valeurs littérales comme des entiers. Vous pouvez lui indiquer de les interpréter comme des longs ou des ulongs (40L est un long, 40UL est un ulong), mais il n'y a pas de moyen simple de déclarer un short.

Il suffit de caster la valeur littérale :

public short MyProperty
{
    get { return (short)GetValue(MyPropertyProperty); }
    set { SetValue(MyPropertyProperty, value); }
}

public static readonly DependencyProperty MyPropertyProperty = 
   DependencyProperty.Register(
      "MyProperty", 
      typeof(short),
      typeof(Window2),
      new UIPropertyMetadata((short)0)
   );

0voto

biju Points 7193
public short MyProperty
{
    get { return (short)GetValue(MyPropertyProperty); }
    set { SetValue(MyPropertyProperty, value); }
}

// Utilisation d'une propriété de dépendance comme stockage de sauvegarde de MyProperty. Cela permet l'animation, le stylage, la liaison, etc...
public static readonly DependencyProperty MyPropertyProperty =
    DependencyProperty.Register("MyProperty", typeof(short), typeof(Window2), new UIPropertyMetadata((short)0));
}

Cela semble fonctionner...on dirait que 0 sera interprété comme un entier...mais pourquoi..?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X