Frage

Ich schaue auf WPF -Komponenten in der Toolbox, aber ich kann den 2005/2008 vorhandenen Fehleranbieter nicht finden.

Wird es entfernt?

War es hilfreich?

Lösung

das ERRORPROVIDER ist eine Winformkontrolle. Es gibt kein Äquivalent in WPF. Sie können jedoch in Visual Studio 2008 weiterhin in der Lage sein, ein Gewinnformulationsprojekt zu erstellen.

Vielleicht möchten Sie sich diesen Artikel über ansehen Fehlervalidierung in WPF. Es hat einige nützliche Vorschläge und Ideen für die Umgang mit Validierung.

Andere Tipps

.NET 3.5 WPF -Unterstützung für idataErrorinfo hinzugefügt: Datenvalidierung in .net 3.5.

Entschuldigung für mich zuerst, dass ich eine so alte Diskussion kommentiert habe, aber dies könnte helfen, da ich genau die gleiche Frage hatte, und Simons Link half mir, "mit etwas zu beginnen", "mit etwas" zu beginnen "

Ich könnte das Tutorial von Simon P.Stevens testen, aber ehrlich gesagt hat es mir nicht so gut gefallen:

  • Die Verwendung von ResponTemplate macht die Antwort beim Anzeigen des Fehlers langsamer.
  • Dies funktioniert nur, wenn die Regel für die gleiche Klasse immer gleich ist (in meinem Fall habe ich einige Mengen, die manchmal negativ sein können, manchmal nicht).
  • Im Falle einer internationalen Anwendung (in meinem Fall) haben externe Bibliotheken keinen Zugriff auf Ressourcen, wobei Übersetzungen keine angeeignete Nachricht festlegen kann.

Ich denke, die Verwendung von MVVM ist sehr gut angepasst, um eine Situation zu verwalten:

Ich setze meine Textbox mit einem Randbrush und einem Tooltip in Bezug auf meine Bedingungen aus, um Tooltip zu verbergen/anzuzeigen und zu färben.

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}"/>

Code dahinter (LostFocus = Leave Who to Windowsform):

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

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

Dann 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");
                }
            }

Nur sehr nützlich, wenn Regeln in Bezug auf die Situation spezifisch sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top