Zum Inhalt springen

WPF XAML ValidationTyp Binding


Empfohlene Beiträge

Geschrieben

Hallo

ich hoffe hier kann mir jemand helfen ich habe folgende XAML- Datei


<UserControl x:Class="LabelTextbox"

             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 

             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 

             xmlns:local="clr-namespace:HJSTFaktura.Steuerelemente"

             xmlns:System="clr-namespace:System;assembly=mscorlib"

             mc:Ignorable="d" 

             DataContext="{Binding RelativeSource={RelativeSource Self}}"

             x:Name="LabelTextbox"

             Height="22" Width="Auto"

             d:DesignHeight="22" d:DesignWidth="435">

    <WrapPanel>

        <Label Width="{Binding Path=HJSTLabelBreite}" Height="24" VerticalAlignment="Top" Content="{Binding Path=HJSTLabelContent}"></Label>

        <Label Width="5"></Label>

        <TextBox x:Name="Textbox1" Width="{Binding Path=HJSTTextboxBreite}" Style="{StaticResource ResourceKey=StyleTextBox}" Height="22">

            <Binding Path="HJSTTextboxText">

                <Binding.ValidationRules>

                    <local:MyValidationRules ValidatesOnTargetUpdated="true">

                        <local:MyValidationRules.Params >

                            <local:ValidationParams [COLOR="#FF0000"]ValidationType[/COLOR]="{Binding [COLOR="#FF0000"]HJSTValidationType[/COLOR]}"></local:ValidationParams>

                        </local:MyValidationRules.Params>

                    </local:MyValidationRules>

                </Binding.ValidationRules>

            </Binding>

        </TextBox>

    </WrapPanel>

</UserControl>

Nun zu den roten Markierungen:

- Gebe ich den ValidationType direkt an --> alles einwandfrei, Code reagiert wie gewünscht.

Ich möchte ihn aber als DependencyProperty angeben --> das Funktioniert nicht, kein Fehlermeldung

Ich habe zwar schon das ein oder andere gelesen aber die gefundenen Lösungen gehen nicht.

Was ich herausgefunden habe ist, dass ich das DependencyProperty scheinbar nicht im Zugriff habe (Datacontext) aber ich weiß auch nicht wie ich es angeben kann.

Hoffe auf eure Hilfe

Danke schonmal

Geschrieben
Ich möchte ihn aber als DependencyProperty angeben --> das Funktioniert nicht, kein Fehlermeldung
Wenn das Binding fehlschlägt, sollte aber zumindest im Debug-Log eine Ausgabe zu sehen sein.

Hat deine UserControl-Klasse denn ein DependencyProperty HJSTValidationType?

Geschrieben

Hallo

folgender Fehler kommt (den ich irgendwie übersehen hatte)

System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=HJSTValidationType; DataItem=null; target element is 'ValidationParams' (HashCode=39642524); target property is 'ValidationType' (type 'ValidationTypes')

Gruß Hans-Jörg

Geschrieben (bearbeitet)

Hallo

das was ich probiert hatte, hatte schon immer ohne dass es mir aufgefallen ist "funktioniert" aber halt nicht komplett richtig.

Ich bekomme nun keinen Fehler mehr, ABER die Validierung wird "nur" überprüft, wenn ich in die Textbox erst einen Wert schreibe und danach wieder lösche und danach die Textbox verlasse.

Die ValidationRule prüft ob ein Wert drin steht oder nicht.

Gruß Hans-Jörg

Bearbeitet von HJST1979
Geschrieben

Hallo

wie man den oberen Fehler wegbekommt, dass habe ich jetzt teilweise hinbekommen. Warum teilweise: Ich habe ein noch viel größeres "allgemeines" Problem festgestellt.

Ich arbeite ja auch für den Wert mit {Binding...} und DepencyProperty solange ich überhaupt keine ValidationRule habe kommen alle Informationen zum Ursprungsobjekt hin und zurück.

Sobald ich aber eine ValidationRule habe die auf einen Fehler läuft kommt nicht der aktuelle Wert im Ursprungsobjekt an, sondern der Programmablauf scheint irgendwie "abzubrechen". Dies bedeutet das der letzte "gültige" Wert im Ursprungsobjekt steht.

Mal sehen, wie ich das hinbekomme ;)

Gruß Hans-Jörg

Geschrieben

... es gibt ja auch 3-4 verschiedene Arten, wie man validieren kann... die unterscheiden sich neben der Implementierung auch genau an diesem Punkt, ob die Daten ins ViewModel wandern oder nicht...

Geschrieben

Eine Möglichkeit bietet die IDataErrorInfo-Schnittstelle...


public string Error

        {

            get { return null; }

        }



        public string this[string name]

        {

            get

            {

                string result = null;

                if (name == ....)

                {

                }

            }

        }

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...