2010-10-06 16 views
0

Je suis nouveau à WPF donc après avoir lu pendant un moment je déduis que mon problème doit être géré avec ce modèle: DependencyProperty.comment et où utiliser DependencyProperty

Je souhaite que mon ToggleButton possède une autre propriété booléenne.

Mon problème est où devrais-je attribuer cette propriété, et comment? À l'intérieur de l'objet lié au ToggleButton? Disons que j'ai une cellule de classe (qui est liée à ce Button) que lorsque je clique dessus, je veux qu'à partir de ce moment-là, il y ait un nouveau visage avec un trigger activé.

Ma nouvelle propriété sera:

bool wasClick 

Quelqu'un peut-il me expliquer comment je devrais écrire et me dire plus sur ce nouveau concept?

EDIT: Le sujet principal est où dois-je définir si je veux asoocited à un Button mais où dois-je écrire le code. Disons que j'ai une classe qui est liée à un Button. Devrais-je écrire:

public static readonly DependencyProperty IsSpinningProperty = 
     DependencyProperty.Register(
... "IsSpinning", typeof(Boolean), 

dans cette classe ou devrais-je l'écrire dans mon modèle de vue? Si c'est le cas, où et comment?

+0

Que ne comprenez-vous pas exactement des propriétés de dépendance? Avez-vous essayé de lire les articles MSDN sur les propriétés de dépendance? http://msdn.microsoft.com/en-us/library/ms752914.aspx et http://msdn.microsoft.com/en-us/library/ms750428.aspx et toutes les autres ressources disponibles sur Internet? –

+0

je n'ai pas vu un exemple direct pour comment et une motivation simple pour pourquoi et je pensais peut-être si je commencerais à construire quelque chose tout en le construisant j'apprendrais mais je n'ai pas vu 'compris aucun exemple showen dans mon google serch. –

Répondre

1

Comme son nom l'indique (plutôt mal), une propriété de dépendance est une propriété dont la valeur peut dépendre d'autre chose. Généralement, cela signifie une propriété dont la valeur est déterminée automatiquement (et dynamiquement) par le framework WPF sous certaines conditions. Les conditions les plus courantes sont les suivantes:

  • La propriété a une valeur par défaut ou hérite de sa valeur d'un ancêtre dans l'arborescence visuelle. Dans ce cas, la valeur de la propriété est déterminée sans qu'elle soit définie.
  • La propriété est la cible de la liaison de données.
  • La valeur de la propriété est définie par une animation.

Toutes les propriétés dont la valeur est définie par l'infrastructure WPF doivent être des propriétés de dépendance. Toute propriété CLR avec un accesseur et un accesseur public peut être la source d'une liaison de données bidirectionnelle.

Dans votre cas, il semble que vous n'ayez pas vraiment besoin d'une propriété de dépendance, pas si vous utilisez un modèle de vue. Vous pouvez simplement le faire (en supposant que vous avez implémenté la notification de changement de propriété dans votre classe):

private bool _IsChecked; 

public bool IsChecked 
{ 
    get { return _IsChecked; } } 
    set 
    { 
     if (value == _IsChecked) 
     { 
     return; 
     } 
     _IsChecked = value; 
     WasChecked = WasChecked || value; 
     OnPropertyChanged("IsChecked"); 
    } 
} 

private bool _WasChecked; 

public bool WasChecked 
{ 
    get { return _WasChecked; } 
    private set 
    { 
     if (value == _WasChecked) 
     { 
     return; 
     } 
     _WasChecked = value; 
     OnPropertyChanged("WasChecked"); 
    } 
} 
+0

donc je pourrais aller dans le xaml et faire: ???? ?

+0

J'ai déjà utilisé sa propriété defult: http://stackoverflow.com/questions/3871467/memory-card-game-wpf- problème J'ai besoin d'une autre propriété –

+0

Je ne comprends pas ce que vous dites. –