Ich möchte eine angehängte Eigenschaft vom Typ ObservableCollection<Notification> erstellen und sie an eine Eigenschaft desselben Typs im DataContext binden.
Derzeit habe ich:
internal static class Squiggle
{
public static readonly DependencyProperty NotificationsProperty = DependencyProperty.RegisterAttached(
"Notifications",
typeof(ObservableCollection<Notification>),
typeof(TextBox),
new FrameworkPropertyMetadata(null, NotificationsPropertyChanged, CoerceNotificationsPropertyValue));
public static void SetNotifications(TextBox textBox, ObservableCollection<Notification> value)
{
textBox.SetValue(NotificationsProperty, value);
}
public static ObservableCollection<Notification> GetNotifications(TextBox textBox)
{
return (ObservableCollection<Notification>)textBox.GetValue(NotificationsProperty);
}
...
}
Mit der folgenden XAML:
<TextBox
x:Name="configTextBox"
Text="{Binding Path=ConfigText, UpdateSourceTrigger=PropertyChanged}"
AcceptsReturn="True"
AcceptsTab="True"
local:Squiggle.Notifications="{Binding Path=Notifications}"/>
Leider erhalte ich, wenn ich das Programm ausführe, eine Ausnahme, die besagt:
Ein 'Binding' kann nicht innerhalb einer 'TextBox'-Sammlung verwendet werden. Ein 'Binding' kann nur auf eine DependencyProperty eines DependencyObjects gesetzt werden.
Dies scheint nur ein Problem zu sein, wenn die angehängte Eigenschaft vom Typ ObservableCollection ist, so dass es scheint, wie WPF versucht, etwas Magisches zu tun, wenn Eigenschaften dieses Typs binden und in den Prozess verwirrt wird. Weiß jemand, was ich tun muss, damit es funktioniert?