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?