Ich habe ein seltsames Problem mit DependecyProperty-Bindung. Um die Frage einfacher Ive zu halten einige Dummy-Steuerelement erstellt, welche die gleiche unerwünschte Verhalten hatWPF Bindung an UserControl DependencyProperty funktioniert nicht wie erwartet
Ich habe eine Usercontrol, die eine DependencyProperty in Code hinter definiert hat:
public static readonly DependencyProperty TestValueProperty = DependencyProperty.Register("TestValue", typeof(string), typeof(Test), new PropertyMetadata(default(string)));
public string TestValue
{
get { return (string)GetValue(TestValueProperty); }
set { SetValue(TestValueProperty, value); }
}
Diese Eigenschaft verwendet wird, in XAML:
<Label Content="{Binding TestValue}" />
diese Kontrolle soll in einer anderen Steuerung wie folgt verwendet werden:
<views:Test TestValue="{Binding Settings.Setting123}" />
Settings
ist in Viewmodel als Eigenschaft definiert.
Aber der Inhalt von Settings.Setting123
ist nicht sichtbar in meinem Benutzerkontrollschild.
Wenn einige Fixes Wert Schreiben statt dem es verbindlich funktioniert:
<views:Test TestValue="Test" />
Aber natürlich ich nicht einen festen Wert will, aber der Inhalt des gebundenen Objekts. Irgendein Hinweis, was hier schief läuft?
Vielen Dank im Voraus!
Geben Sie bitte genügend Code ein, um das Problem zu reproduzieren. –
Obwohl Sie es in Ihrer Frage nicht gezeigt haben, stellen Sie den DataContext des UserControl sicher auf sich selbst (z.von 'DataContext = this' in seinem Konstruktor). Entfernen Sie das und schreiben Sie die Bindungen in das XAML des UserControls mit einer RelativeSource, wie in Eds Antwort gezeigt. – Clemens
Ja, DataContext in UserControl ist wie folgt: DataContext = "{Binding RelativeSource = {RelativerSource Mode = Self}}" – emvoll