2012-03-27 5 views
0

Ich möchte ein Steuerelement wie eine TextBox ausblenden, wenn es eine Bindung für eine Eigenschaft wie die Texteigenschaft hat, die ungültig ist (hat einen BindingExpression-Pfadfehler ausgelöst). Dies unterscheidet sich von der einfachen Überprüfung, ob der Wert der Bindung in einem Trigger null ist. Null kann tatsächlich ein vollkommen akzeptabler Wert sein, und das Steuerelement sollte immer noch angezeigt werden. Grundsätzlich habe ich eine DataTemplate, die ich mit mehreren verschiedenen Arten von Objekten aus meiner VM wiederverwenden möchte, von denen einige bestimmte Eigenschaften gemeinsam haben können, und einige von ihnen können einzigartige Eigenschaften haben. Wenn eine bestimmte Eigenschaft nicht in dem Objekt vorhanden ist, das derzeit die Bindungsquelle der DataTemplate ist, wird die DataTemplate über eine Art zusätzlichen Trigger oder eine zusätzliche Bindung verfügen, die das bestimmte Steuerelement ausblenden, das an die Eigenschaft gebunden ist, die nicht vorhanden ist.Ausblenden eines Steuerelements, wenn es eine ungültige Bindung hat

+0

ich hier effektiv die gleiche Frage nur beantwortet http://stackoverflow.com/questions/9893825/mvvm-hiding-a-control-when-bound -Eigenschaft-ist-nicht-anwesend – Phil

+0

Brilliant! Danke @Phil, genau das, was ich gesucht habe –

Antwort

0

Sie könnten mit der Validation.ErrorTemplate herumspielen, um das Steuerelement zu stylen, wenn ein Überprüfungsfehler auftritt.

Dann einfach die ValidatesOnDataError = True in der Bindung festgelegt und gehen Sie weg

+0

Aber was ist, wenn es einen anderen legitimen Validierungsfehler gibt? Wenn beispielsweise ein TextBox.Text an eine Ganzzahl gebunden ist und der Benutzer einen Buchstaben eingibt und einen Überprüfungsfehler (die Ganzzahl kann nicht analysiert werden) ausgibt, verschwindet die TextBox. –

+0

Auch das Setzen von ValidatesOnDataError = True für die Bindung scheint den BindingExpression-Pfadfehler nicht zu fangen –

+0

Hmm ja, ich habe offensichtlich nicht darüber nachgedacht. Phils Kommentar scheint eine gute Lösung zu sein. FallBackValue und ein Sichtbarkeitskonverter. Das würde völlig funktionieren. –

Verwandte Themen