Ich habe eine Verhaltensklasse mit einer Abhängigkeitseigenschaft erstellt, die ich an ein Steuerelement in meiner Sicht (XAML) anhängen möchte. Ich verwende MVVM und ich muss diese angefügte Eigenschaft festlegen, indem Sie es an eine Eigenschaft in meinem ViewModel binden, aber es wird nicht festgelegt. Hier ist eine vereinfachte Version von dem, was ich tun möchte:Angehängte Verhaltenseigenschaft, die nicht durch Bindung in UWP festgelegt wurde
Verhalten Klasse:
public static class TestBehavior
{
public static readonly DependencyProperty SomeStringProperty =
DependencyProperty.Register("SomeString", typeof(string), typeof(TestBehavior), new PropertyMetadata(""));
public static string GetSomeString(DependencyObject o)
{
return (string)o.GetValue(SomeStringProperty);
}
public static void SetSomeString(DependencyObject o, string value)
{
o.SetValue(SomeStringProperty, value);
}
}
XAML:
<TextBlock Text="{Binding ViewModelProperty}" local:TestBehavior.SomeString="{Binding ViewModelProperty}" />
Die Eigenschaft "Text" des TextBlock- bindet richtig, aber die "SomeString" -Eigenschaft des Verhaltens nicht.
Interessanterweise - wenn ich die Verhalten-Eigenschaft auf einen Wert "hart" Code wird es gesetzt. Zum Beispiel:
Irgendwelche Ideen, warum die Bindung an die Verhaltenseigenschaft nicht funktioniert?
Genau das habe ich gemacht (mit Breakpoints). Ich habe die Callback-Methode hinzugefügt und die Bindung ausgeführt. Gibt es eine Idee, warum die Get/Set-Methoden bei der Verwendung von Bindungen nicht ausgeführt werden? –
Es ist nur die Art, wie die Bindungsinfrastruktur mit Abhängigkeitseigenschaften (normal oder angehängt) funktioniert. Ich glaube, es ist eine Form der internen Optimierung. – ibebbs
Ich glaube auch, dass die 'GetSomeString'-Methode nur ein übliches Muster ist, das es Ihrem Code erleichtert, auf die Eigenschaft zuzugreifen. Die Plattform setzt nur die Werte beim Binden. –