I've gotten the Binding error you are seeing when I pass the wrong ownerType to DependencyProperty.Register method... please check to make sure you're using typeof(MultiColumnComboBox) as shown below.
/// <summary>
/// Interaction logic for MultiColumnComboBox.xaml
/// </summary>
public partial class MultiColumnComboBox : UserControl
{
/// <summary>
/// This creates the dependency property for the collection to display.
/// </summary>
public static readonly DependencyProperty ItemsSourceProperty =
DependencyProperty.Register("ItemsSource", typeof(IList<Customer>), typeof(MultiColumnComboBox));
/// <summary>
/// This property gets you to the collection that's being displayed.
/// </summary>
public IList<Customer> ItemsSource
{
get { return (IList<Customer>)GetValue(ItemsSourceProperty); }
set { SetValue(ItemsSourceProperty, value); }
}
public MultiColumnComboBox()
{
InitializeComponent();
}
}
Also, make sure you set the Binding ElementName in your UserControl so that it has the right DataContext.
<UserControl x:Class="DependencyPropertyExample.MultiColumnComboBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Name="userControl1">
<Grid>
<DataGrid ItemsSource="{Binding Path=ItemsSource, ElementName=userControl1}" />
</Grid>
</UserControl>