2010-04-14 3 views
1

J'ai une page qui contient plusieurs zones de texte. Ces contrôles sont liés à un modèle. J'utilise MVVM. Supposons que j'ai trois zones de texte, FirstName, LastName et Company. Donc, dans le modèle, j'ai trois propriétés à lier. Maintenant, j'ai besoin de suivre les changements sont arrivés à chaque domaine. Si FirstName change de la valeur d'origine, j'ai besoin de la zone de texte à colorier avec une couleur d'arrière-plan différente.Suivi des modifications apportées aux champs individuels - Silverlight

Actuellement, je crée une autre propriété appelée FirstNameChanged et reliant l'arrière-plan de cette propriété. Ce sera mis à jour lorsque je change le FirstName. Pour 3 champs, cela semble être OK. Mais quand j'ai plus de champs, le nombre de propriétés sera trop élevé.

Y a-t-il une meilleure façon de gérer cela?

+0

Avec SL3 ou SL4? – AnthonyWJones

+0

De quoi vous inquiétez-vous exactement, le stockage (le nombre de champs) ou l'interface (le nombre de propriétés exposées étant excessif)? – AnthonyWJones

Répondre

0

On ne comprend pas très bien ce que vous voulez dire en suivant les changements. Si vous voulez simplement dire que les zones de texte doivent changer de couleur lorsque vous modifiez un champ, alors voici comment je le résoudrais.

Comme il s'agit d'une fonctionnalité spécifique à la vue, le code doit figurer dans le code derrière la vue et ne doit pas être dans le modèle de vue.

donc je faire ce qui suit:

Créer un gestionnaire d'événements pour le changement de texte dans les zones de texte:

private void TextBox_TextChanged(object sender, TextChangedEventArgs e) 
{ 
    TextBox textbox = sender as TextBox; 
    textbox.Background = new SolidColorBrush(Colors.Green); 
} 

et se lient alors l'événement TextChanged de toutes les zones de texte à ce gestionnaire d'événements.

Questions connexes