WPF自定义控件:集合类型的DependencyProperty

|| 我有一个
CustomControl
,其中包含
ListBox
<UserControl x:Class=\"WpfApplication1.CustomList\"
             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"
             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"
             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" 
             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" 
             mc:Ignorable=\"d\" 
             d:DesignHeight=\"300\" d:DesignWidth=\"300\">
    <Grid>
        <ListBox Name=\"listBox1\" ItemsSource=\"{Binding ListSource}\" />
    </Grid>
</UserControl>
我将ѭ3绑定到后面代码中的属性:
public partial class CustomList : UserControl, INotifyPropertyChanged
    {
        public CustomList( )
        {
            InitializeComponent( );
        }

        public ObservableCollection<object> ListSource
        {
            get
            {
                return (ObservableCollection<object>)GetValue( ListSourceProperty );
            }
            set
            {
                base.SetValue(CustomList.ListSourceProperty, value);
                NotifyPropertyChanged( \"ListSource\" );
            }
        }

        public static DependencyProperty ListSourceProperty = DependencyProperty.Register(
             \"ListSource\",
             typeof( ObservableCollection<object> ),
             typeof( CustomList ),
             new PropertyMetadata( OnValueChanged ) );

        private static void OnValueChanged( DependencyObject d, DependencyPropertyChangedEventArgs e )
        {
            ( (CustomList)d ).ListSource = (ObservableCollection<object>)e.NewValue;
        }

        public event PropertyChangedEventHandler PropertyChanged;
        public void NotifyPropertyChanged( string propertyName )
        {
            if(PropertyChanged != null)
            {
                PropertyChanged( this, new PropertyChangedEventArgs( propertyName ) );
            }
        }
    }
现在在我的ѭ5中,我尝试将
ObservableCollection
的\“ Articles \”与我的
CustomControl
及其ListSource DependencyProperty绑定:
<Window x:Class=\"WpfApplication1.MainWindow\"
        xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"
        xmlns:local=\"clr-namespace:WpfApplication1\"
        xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"
        DataContext=\"{Binding RelativeSource={RelativeSource Self}}\"
        Title=\"MainWindow\" Height=\"350\" Width=\"525\">
    <Grid>
        <local:CustomList ListSource=\"{Binding Articles}\"/>
    </Grid>
</Window>
我得到的错误是:
Error: 1 : Cannot create default converter to perform \'one-way\' conversions between types \'System.Collections.ObjectModel.ObservableCollection`1[WpfApplication1.Article]\' and \'System.Collections.ObjectModel.ObservableCollection`1[System.Object]\'
如果在自定义控件中我有
ObservableCollection<Article>
而不是
ObservableCollection<object>
,那么它可以工作。 因此,有没有一种方法可以将我的自定义控件的DependencyProperty与对象的ObservableCollection绑定,而不必指定对象的类型?     
已邀请:
将ListSource的类型更改为IEnumerable,然后可以绑定到任何集合。     

要回复问题请先登录注册