我正在创建一个应用程序,在其中对一组控件显示之前需要拦截并翻译对象列表。为此,我创建了一个ObservableCollection类型的DependencyProperty(BackupEntry是定义有关数据库信息的自定义类)。我想要实现的是将控件绑定到MVVM中的ObservableCollection。此集合可用于最初加载控件。然后,当通过控件界面添加条目时,它应该添加到作为DependencyProperty定义的内部ObservableCollection中,并显示在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从未被调用,新项目未显示在控件的集合中。我是完全偏离轨道了吗?为使其正常工作,我需要做什么?