Question

Je suis à la recherche des composants WPF dans la boîte à outils, mais je ne peux pas trouver le fournisseur d'erreur qui est présent dans 2005/2008.

est-il retiré?

Était-ce utile?

La solution

ErrorProvider est un contrôle Winforms . Il n'y a pas d'équivalent dans WPF. Mais vous serez toujours en mesure de trouver dans en studio visuel 2008 si vous créez un projet de formulaires gagnant.

Vous pouvez jeter un oeil à cet article sur . Il a quelques suggestions et idées utiles sur la façon de gérer la validation.

Autres conseils

D'abord excusez-moi pour commenter un vieux débat, mais cela pourrait aider comme je l'ai eu exactement la même question, et le lien de Simon m'a aidé à « commencer par quelque chose »

Je pourrais tester tutoriel Simon P.Stevens, mais honnêtement, je ne l'aime beaucoup:

  • Utilisation responseTemplate rend la réponse plus lente lors de l'affichage de l'erreur.
  • Cela ne fonctionne que si la règle est toujours la même pour une même classe (dans mon cas, j'ai quelques quantités, qui peuvent parfois être négatifs, parfois).
  • Dans le cas d'une demande internationalisé (dans mon cas), les bibliothèques externes ont pas accès aux ressources où sont les traductions, donc je ne peut pas définir un message approprié.

Je pense en utilisant MVVM est très bien adapté pour gérer toute situation:

Je mis mon TextBox, avec un BorderBrush et infobulle, en ce qui concerne mes conditions, je cacherai / Affichage info-bulle et bordure de couleur:

XAML:

<TextBox x:Name="tbName" Grid.Column="1" Grid.Row="0" Margin="3" LostFocus="tbName_LostFocus" BorderBrush="{Binding BordertbName}"
                 Text="{Binding MonRepere.Nom}" ToolTipService.ToolTip="{Binding ErrorName}" ToolTipService.IsEnabled="{Binding ToolTipNameEnable}"/>

Derrière le code (LostFocus = Laisse pour qui utilisé pour WindowsForm):

private void tbName_LostFocus(object sender, RoutedEventArgs e)
    {
        if(tbName.Text=="")
        {
            this.mv.ErrorName = Properties.Resources.ErrorEmpty;

        }
        else
        {
            mv.ErrorName = "";
        }
    }

Alors ViewModel:

private string errorName;
            public string ErrorName
            {
                get { return errorName; }
                set
                {
                    errorName = value;
                    if (value == "")
                    {
                        ToolTipNameEnable = false;
                        BordertbName = Brushes.Gray;
                    }
                    else
                    {
                        ToolTipNameEnable = true;
                        BordertbName = Brushes.Red;
                    }
                    this.NotifyPropertyChanged("ErrorName");
                }
            }
            private Brush bordertbName;
            public Brush BordertbName
            {
                get { return bordertbName; }
                set
                {
                    bordertbName = value;
                    this.NotifyPropertyChanged("BordertbName");
                }
            }
            private bool toolTipNameEnable;
            public bool ToolTipNameEnable
            {
                get { return toolTipNameEnable; }
                set
                {
                    toolTipNameEnable = value;
                    this.NotifyPropertyChanged("ToolTipNameEnable");
                }
            }

Juste très utile lorsque les règles sont spécifiques en ce qui concerne la situation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top