WPF: TextBox-Text wird nicht aktualisiert

Ich habe ein Benutzersteuerelement, dass ich innerhalb einer DataTemplate diese UserControl enthält eine TextBox die gebundenen mit Wert Eigenschaft(deklariert als DependencyProperty) von meinem UserControl. In der Daten-Vorlage, die ich binden diese Wert Eigenschaft, die mit meiner eigentlichen Eigenschaft sagen Namen (auch ein DependencyProperty). Es funktioniert einwandfrei, ich habe einen Wert zuweisen Namen Eigenschaft beim laden und meine TextBox zeigt Sie an, ich ändern Sie den Wert von TextBox und aktualisiert es meine Namen Eigenschaft auch.
Jetzt das problem kommt, während ich einen PropertyChangedEventHandler im Abhängigkeitseigenschaft, ich checke für Sie den Wert, wenn es gilt, nichts zu tun, wenn gültig und weisen alten Wert, wenn nicht gültig. Falls der Wert nicht gültig ist, wenn ich zuordnen, der alte Wert, Immobilien-updates, aber es ist nicht die Anzeige aktualisiert den Wert in meinem TextBox von UserControl. Kann mir jemand sagen warum?

XAML meiner UserControl:

<UserControl x:Name="usercontrol">
   <StackPanel>
      <TextBlock ......./>
      <TextBox Binding={Binding ElementName=usercontrol, Path=Value, Mode=TwoWay}/>
   </StackPanel>
</UserControl>

In der code-behind - Wert ist ein DependencyProperty

Ich bin mit dieser in meinem DataTemplate:

<HierarchicalDataTemplate DataType="{x:Type myLib:myClass}" ItemsSource="{Binding Children}">
    <Expander Header="{Binding}">
        <WrapPanel>
            <edproperty:TextPropertyEditor Caption="Name" Value="{Binding Name, Mode=TwoWay}"/>
            <edproperty:TextPropertyEditor .................../>
            <edproperty:TextPropertyEditor .................../>
            <edproperty:TextPropertyEditor ...................../>
        </WrapPanel>
    </Expander>
</HierarchicalDataTemplate>

Diese Vorlage verwende ich in einem TreeView. Innerhalb TreeView ich Wert eingeben in der TextBox updates, die das Wert Eigentum meines UserControl, dass wiederum updates Namen Eigenschaft von myClass ich bin die Zuweisung einer PropertyChangedCallback zu meinem Namen Eigenschaft in myClass, Durchführung einer Validierung und die Neuzuweisung der OldValue wenn die Validierung fehlschlägt. Sie wiederum updates Wert Eigenschaft auch, aber ich bin immer noch zu sehen, dass die TextBox denselben Wert hat, den ich zuvor eingegeben haben, nicht aktualisiert.

public string Name
    {
        get
        {
            return (string)GetValue(NameProperty);
        }
        set
        {
            SetValue(NameProperty, value);
        }
    }

    //Using a DependencyProperty as the backing store for Name.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty NameProperty =
        DependencyProperty.Register("Name", typeof(string), typeof(myClass), new UIPropertyMetadata(null, OnNameChanged));

    protected static void OnNameChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args)
    {
        if(checkRequired && !IsValid(e.NewValue.ToString()))
        {
            checkRequired=false;
            (sender as myClass).Name = args.OldValue.ToString();
        }
    }

    private static bool IsValid(string name)
    {
         .............some logic here
    }
  • Ohne zu sehen, Ihren code, das wird schwierig, richtig zu kommentieren. Könnte Sie veröffentlichen Sie Ihren code bitte?
  • es ist zu viel, es kann nicht gebucht werden. Sie können Fragen, wenn Sie mehr Erklärung.
  • Nein, Sie können schreiben, minimaler code-Stück zu reproduzieren... Sonst werden wir raten, nicht zu beantworten. Niemand mag Unsicherheit. Besonders Programmierer..
InformationsquelleAutor viky | 2009-10-30
Schreibe einen Kommentar