我有一个自定义类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;
}
}
}