Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF,Linq到SQL,C#>;如何填充和保存组合框_C#_Wpf_Linq_Linq To Sql_Combobox - Fatal编程技术网

WPF,Linq到SQL,C#>;如何填充和保存组合框

WPF,Linq到SQL,C#>;如何填充和保存组合框,c#,wpf,linq,linq-to-sql,combobox,C#,Wpf,Linq,Linq To Sql,Combobox,把我的头发拔出来。我有一个表'Belts',列'BeltID'和'BeltColor'。我有一个LINQtoSQL生成的类,并且正在尝试填充一个组合框,但它只是部分工作。以下是到目前为止我得到的信息: private void Window_Loaded(object sender, RoutedEventArgs e) { using (DojoDataClassesDataContext conn = new DojoDataClassesDataContext()) {

把我的头发拔出来。我有一个表'Belts',列'BeltID'和'BeltColor'。我有一个LINQtoSQL生成的类,并且正在尝试填充一个组合框,但它只是部分工作。以下是到目前为止我得到的信息:

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作为所有下拉选项,但一旦选择,它将根据顺序显示正确的皮带颜色。

假设此功能:

public IEnumerable<Belt> GetBelts()
{
 return /* the belts you want */;
}
public IEnumerable GetBelts()
{
退回/*您想要的皮带*/;
}
将此文件放在您的窗口中。参考资料:

        <ObjectDataProvider x:Key="BeltObject"
                        MethodName="GetBelts"                                   
                        ObjectType="{x:Type database:Belts}">
        </ObjectDataProvider>

与:


这是使用WPF最干净的方法。您可能遇到问题,因为您的
DisplayMemberPath
SelectedValuePath
不正确-这些应该是表示属性名称的字符串值,而不是与特定属性值的绑定。

两件事:

查看您的linq to sql 我不是冒充的,但我认为您从来没有真正调用过查询。请尝试在查询末尾添加.ToList

尝试将显示器更改为:

DisplayMemberPath=“{Binding Path=BeltColor}”


SelectedValuePath=“{Binding Path=BeltID}”

执行此代码时,您在输出窗口中看到了什么?有任何绑定失败消息吗?@Robert:没有绑定失败消息@Anthony:在查询末尾添加.ToList()会导致查询在组合框内打印出来。奇怪,我知道。改变显示器不起作用@杰克:我要试试你的解决方案了。不行,杰克,我在xaml中遇到了名称空间类型错误,我无法用那种方式解决。我希望有一种方法可以修改我的查询和/或xaml代码,使其正常工作,因为我的项目的其余部分都是以类似的方式编码的。如果我迟钝,一定要告诉我。我还在学习。想想看,我甚至不需要做任何装订。如果我可以用代码填充组合框,那么我可以根据文本框的值使用LINQ填充数据库。
<ComboBox Margin="101,0,57,97" Name="cboBelt" DisplayMemberPath="BeltColor" SelectedValuePath="BeltID" Height="23" VerticalAlignment="Bottom" ItemsSource="{Binding Source={StaticResource BeltObject}}"/>