Я хочу создать вложенное свойство типа ObservableCollection и связать его со свойством того же типа в DataContext.
В настоящее время у меня есть:
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);
}
...
}
Со следующим XAML:
<TextBox
x:Name="configTextBox"
Text="{Binding Path=ConfigText, UpdateSourceTrigger=PropertyChanged}"
AcceptsReturn="True"
AcceptsTab="True"
local:Squiggle.Notifications="{Binding Path=Notifications}"/>
К сожалению, когда я запускаю это, я получаю исключение:
«Связывание» нельзя использовать в коллекции «TextBox». «Связывание» может быть установлено только для свойства DependencyObject объекта DependencyObject.
Это кажется проблемой, только когда присоединенное свойство имеет тип ObservableCollection, поэтому кажется, что WPF пытается сделать что-то волшебное, когда связывает свойства этого типа и запутывается в процессе. Кто-нибудь знает, что мне нужно сделать, чтобы это работало?