5 Stimmen

Abhängigkeitseigenschaft in benutzerdefinierten Steuerelementen bidirektional binden

Ich habe benutzerdefinierte Steuerung mit folgenden:

<TextBox Grid.Column="3" Text="{TemplateBinding SampleValue}" />

public static readonly DependencyProperty SampleValueProperty =
            DependencyProperty.RegisterAttached("SampleValue", typeof(string), typeof(IdattFilterBox), new PropertyMetadata(null));

public string SampleValue
        {
            get { return GetValue(SampleValueProperty) as string; }
            set { this.SetValue(SampleValueProperty, value); }
        }

In einem UserControl, wo ich mein benutzerdefiniertes Steuerelement deklariere, habe ich XAML wie folgt:

<my:SampleBox SampleValue="{Binding SampleValue, Mode=TwoWay}" />

und ViewModel wie folgt:

public string SampleValue
        {
            get
            {
                return this.sampleValue;
            }

            set
            {
                this.sampleValue = value;
            }
        }

Ich kümmere mich nicht um INotifyPropertyChanged auf VM (also erzähl mir nichts davon :) ) Im Moment funktioniert es so weit, dass der Text im Textfeld angezeigt wird, so wie ich es in VM eingestellt habe. Aber wenn ich diesen Text ändere, wird er nicht wieder in VM angezeigt.

Was soll ich tun? Ich schätze, ich muss etwas Code innerhalb des benutzerdefinierten Steuerelements schreiben? Sollte ich mit TextBox PART umgehen und LostFocus abfangen? Oder wie funktioniert es mit TemplateBinding?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X