tags:

views:

510

answers:

1

I have a custom class Contact.

I am trying to bind a List<Contact> to a ComboBox.

But I can't get the right syntax/commands for the Windows.Resources part, e.g. the code below gives the error "The type reference cannot find a public type named 'List'", what do I need to fix in Windows.Resources to get this to work?

My XAML:

    <Window.Resources>
        <ObjectDataProvider
            x:Key="contacts"
            MethodName="GetContacts"
            ObjectType="{x:Type system:List}">
            <ObjectDataProvider.MethodParameters>
                <x:Type TypeName="local:GetContacts"/>
            </ObjectDataProvider.MethodParameters>
        </ObjectDataProvider>
    </Window.Resources>


    <StackPanel>
        <StackPanel>
            <TextBlock Text="Select the contact:"/>
            <ComboBox ItemsSource="{Binding
                Source={StaticResource contacts}}"/>
        </StackPanel>
    </StackPanel>
</Window>

My code behind class: namespace dpwpf { class StoreDB { private string connectionString = "App_Data/main.sqlite";

        public List<Contact> GetContacts()
        {
            SQLiteConnection conn = new SQLiteConnection("Data Source=" + connectionString);
            SQLiteCommand cmd = conn.CreateCommand();

            List<Contact> contacts = new List<Contact>();
            try
            {
                conn.Open();
                cmd.CommandText = String.Format("SELECT * FROM contacts");
                SQLiteDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    Contact contact = new Contact(
                        Int32.Parse(reader[0].ToString()),
                        reader[1].ToString(),
                        reader[2].ToString()
                    );
                    contacts.Add(contact);
                }
            }
            finally
            {
                conn.Close();
            }

            return contacts;
        }
    }
}
+2  A: 

Hi, your problem is in this line ObjectType="{x:Type system:List}"

this needs to be the object in which GetContacts is defined.

if its in youe window1.xaml.cs it would looks something like this

ObjectType="{x:Type X:Window1}"

HTH Eric,