0

我有一个自定义类Contact

我正在尝试将 a 绑定List<Contact>到 ComboBox。

但是我无法获得该Windows.Resources部分的正确语法/命令,例如下面的代码给出了错误“类型引用找不到名为'List'的公共类型”,我需要修复什么才能让它Windows.Resources工作?

XAML:

<Window x:Class="dpwpf.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300"
    xmlns:system="clr-namespace:System;assembly=mscorlib"
    xmlns:local="clr-namespace:dpwpf">

    <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>

类后面的代码:

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;
        }
    }
}
4

1 回答 1

2

您的问题出在这一行:

ObjectType="{x:Type system:List}"

这需要是在其中GetContacts定义的对象。

在您的window1.xaml.cs情况下,它看起来像这样:

ObjectType="{x:Type X:Window1}"
于 2009-02-02T15:06:59.843 回答