ObservableCollection as DependencyProperty

Я создаю приложение, в котором список объектов должен быть перехвачен и преобразован перед отображением в группе элементов управления. Для этого я создал DependencyProperty типа ObservableCollection (BackupEntry - это настраиваемый класс, определяющий информацию о базе данных). Я хочу, чтобы элемент управления был привязан к ObservableCollection в MVVM. Эту коллекцию можно использовать для первоначальной загрузки элемента управления. Затем, когда запись добавляется через интерфейс управления, она должна быть добавлена ​​во внутреннюю коллекцию ObservableCollection, которая определяется как DependencyProperty и отображается в коллекции в MVVM, поскольку они связаны. Вот код, который я использую:

protected ObservableCollection<BackupEntry> _BackupItems = new ObservableCollection<BackupEntry>();

public static readonly DependencyProperty BackupItemsProperty = DependencyProperty.Register("BackupItems", typeof(ObservableCollection<BackupEntry>), typeof(ExplorerWindow));

public ObservableCollection<BackupEntry> BackupItems
{
    get { return (ObservableCollection<BackupEntry>)GetValue(BackupItemsProperty); }
    set { SetValue(BackupItemsProperty, value); }
}

public ExplorerWindow()
{
    DefaultStyleKeyProperty.OverrideMetadata(typeof(ExplorerWindow), new FrameworkPropertyMetadata(typeof(ExplorerWindow)));
    SetValue(BackupItemsProperty, _BackupItems);
    _BackupItems.CollectionChanged += new NotifyCollectionChangedEventHandler(BackupItems_CollectionChanged);
}

void BackupItems_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
    throw new NotImplementedException();
}

И в тестовом приложении:

<my:ExplorerWindow Name="ew" HorizontalAlignment="Left" VerticalAlignment="Top" Width="503" Height="223" BackupItems="{Binding BackupListItems}" />

Я создал кнопку на экране в своем тестовом приложении. При нажатии элемент добавляется в BackupListItems. BackupItems_CollectionChanged никогда не вызывается, и новый элемент не отображается в моей коллекции, находящейся под моим контролем. Я здесь совсем сбился с пути? Что мне нужно сделать, чтобы это заработало?

10
задан Dirk Dastardly 12 August 2011 в 13:04
поделиться