【发布时间】:2010-03-24 17:48:13
【问题描述】:
拔掉我的头发。我有一个表“Belts”,其中包含“BeltID”和“BeltColor”列。我有一个 Linq to SQL 生成的类,并试图填充一个组合框,它只是部分工作。到目前为止,这是我所得到的:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
using (DojoDataClassesDataContext conn = new DojoDataClassesDataContext())
{
var belts = (from b in conn.Belts
select b);
cboBelt.DisplayMemberPath = "BeltColor";
cboBelt.SelectedValuePath = "BeltID";
cboBelt.ItemsSource = belts;
}
}
还有 xaml:
<ComboBox Margin="101,0,57,97" Name="cboBelt" DisplayMemberPath="{Binding Path = Belt.BeltColor}" SelectedValuePath="{Binding Path = Belt.BeltID}" Height="23" VerticalAlignment="Bottom" />
当然,在 DojoDataClassesDataContext 中有整个自动生成的 Linq to SQL 内容,我曾经在没有任何问题的情况下进行文本框数据绑定(好吧,除了需要一段时间才能弄清楚之外)。目前,组合框会拉出文本:TheNameOfMyProject.Belt 作为所有下拉选项,但一旦选择它就会根据顺序显示正确的腰带颜色。
【问题讨论】:
-
执行此代码时,您在“输出”窗口中看到了什么?是否有任何绑定失败消息?
-
@Robert:没有绑定失败。 @Anthony:在查询末尾添加 .ToList() 会导致查询在组合框中打印出来。奇怪,我知道。换显示器不行。 @Jake:即将尝试您的解决方案。
-
No dice Jake,我在 xaml 中遇到命名空间类型错误,但我无法弄清楚。我希望有一种方法可以修改我的查询和/或 xaml 代码以使其正常工作,因为我的项目的其余部分无论如何都是以类似的风格编码的。如果我很迟钝,请告诉我。我还在学习。
-
你想想,我什至不需要做任何绑定。如果我可以用代码填充组合框,那么我可以根据文本框的值使用 LINQ 填充数据库。
标签: c# wpf linq linq-to-sql combobox