Bindung Validierung.HasError-Eigenschaft in MVVM

Ich bin derzeit die Durchführung einer ValidationRule um zu überprüfen, ob einige ungültige Zeichen in einem Textfeld. Ich bin froh, dass die Einstellung der Klasse habe ich implementiert, erbt ValidationRule auf meine TextBox setzt es in rot, wenn solche Zeichen gefunden werden, aber ich würde auch gerne die Validation.HasError Eigentum oder die Validierung.Errors-Eigenschaft auf pop-eine messagebox, die den Benutzer darüber informiert, dass es Fehler in den verschiedenen Textboxen in die Seite.

Gibt es eine Möglichkeit, zu binden, eine Eigenschaft, die in meinem ViewModel zu den Validation.HasError und/oder der Validierung.Fehler Eigenschaften in Ordnung für mich, um Zugang zu Ihnen haben, in meinem ViewModel?

Hier ist mein Fehler-style für die TextBox:

<Style x:Key="ErrorValidationTextBox" TargetType="{x:Type pres:OneTextBox}">
    <Setter Property="Validation.ErrorTemplate">
        <Setter.Value>
            <ControlTemplate>
                <DockPanel LastChildFill="True">
                    <TextBlock DockPanel.Dock="Right"
                    Foreground="Red"
                    FontSize="12pt"
                    Text="{Binding ElementName=MyAdorner, 
                           Path=AdornedElement.(Validation.Errors)[0].ErrorContent}">
                    </TextBlock>
                    <AdornedElementPlaceholder x:Name="MyAdorner"/>
                </DockPanel>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Hier ist, wie erkläre ich meiner TextBox (OneTextBox kapselt die regelmäßige WPF-TextBox -) in meinem XAML:

<pres:OneTextBox Watermark="Name..." Margin="85,12,0,0" Style="{StaticResource ErrorValidationTextBox}"
                 AcceptsReturn="False" MaxLines="1" Height="22" VerticalAlignment="Top"
                 HorizontalAlignment="Left" Width="300" >
    <pres:OneTextBox.Text>
        <Binding Path="InterfaceSpecification.Name" UpdateSourceTrigger="PropertyChanged">                    
            <Binding.ValidationRules>                       
                <interfaceSpecsModule:NoInvalidCharsRule/>                        
            </Binding.ValidationRules>                    
        </Binding>               
    </pres:OneTextBox.Text>        
</pres:OneTextBox>
Einfach nur neugierig: Sind Sie absichtlich verbreiten Ihre Validierungslogik über view UND viewmodel?
Ja, wie bei meinem Gültigkeitsregel, das einzige was passiert, ist, dass die Grenze meiner TextBox wird rot. Es verhindert nicht, dass Benutzer von der Eingabe von weiteren Zeichen (auch wenn es ein ungültiges Zeichen ist die Name-Eigenschaft hält aktualisiert werden) oder es nicht verhindern, dass ihm die Schaffung einer InterfaceSpecification mit diesem Namen. Ich konnte binden Sie die Validierung.HasError Sie auf den "submit" - button von meiner form, aber ich bin mit einem benutzerdefinierten Rahmen und haben keinen Zugriff auf die Schaltfläche (als privat im Formular-Steuerelement, leider).

InformationsquelleAutor Choub890 | 2014-04-03

Schreibe einen Kommentar