Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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
C# 如何通过WPF组合框选择从数据库填充列表集合_C#_.net_Wpf_Wpf Controls - Fatal编程技术网

C# 如何通过WPF组合框选择从数据库填充列表集合

C# 如何通过WPF组合框选择从数据库填充列表集合,c#,.net,wpf,wpf-controls,C#,.net,Wpf,Wpf Controls,我有多对多表,希望显示WPF控件中的一些字段 每当我在组合框中选择讲师ID时,如何填写列表集合list courses=new list()?我只想在ListView控件的列表中显示CourseID和标题 这是我的密码: public partial class MainWindow : Window { SchoolEntities db = new SchoolEntities(); public MainWindow() { InitializeC

我有多对多表,希望显示WPF控件中的一些字段

每当我在组合框中选择讲师ID时,如何填写列表集合
list courses=new list()
?我只想在ListView控件的列表中显示CourseID和标题

这是我的密码:

public partial class MainWindow : Window
{
    SchoolEntities db = new SchoolEntities();
    public MainWindow()
    {
        InitializeComponent();
        var instructors = db.Instructors.Where(f => f.HireDate == 2011).ToList();

        this.comboBox1.ItemsSource = instructors;
        this.comboBox1.DisplayMemberPath = "LastName";
        this.comboBox1.SelectedValuePath = "InstructorID";           
    }
    List<Course> courses = new List<Course>();

    private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        int S = (int)this.comboBox1.SelectedValue;
        var InstrSelection = db.Instructors.Include("CourseInstructors.Course").SingleOrDefault(f => f.InstructorID == S);


        foreach (var C in InstrSelection.CourseInstructors)
        {
            courses.Add(C.Course);
        }

        this.listView1.DataContext = null;
        this.listView1.DataContext = courses;
    }
}   
公共部分类主窗口:窗口
{
SchoolEntities db=新的SchoolEntities();
公共主窗口()
{
初始化组件();
var instructors=db.instructors.Where(f=>f.HireDate==2011).ToList();
this.comboBox1.ItemsSource=讲师;
this.comboBox1.DisplayMemberPath=“LastName”;
this.comboBox1.SelectedValuePath=“InstructorID”;
}
列表课程=新列表();
private void comboBox1\u SelectionChanged(对象发送方,SelectionChangedEventArgs e)
{
int S=(int)this.comboBox1.SelectedValue;
var InstrSelection=db.Instructors.Include(“CourseInstructors.Course”).SingleOrDefault(f=>f.InstructorID==S);
foreach(指令选择课程指令中的变量C)
{
增加(C.课程);
}
this.listView1.DataContext=null;
this.listView1.DataContext=课程;
}
}   
窗口是xaml

<Window x:Class="School.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="773" Width="677">

<Grid>        
    <ComboBox Height="23" HorizontalAlignment="Left" Name="comboBox1"  SelectionChanged="comboBox1_SelectionChanged"></ComboBox>
    <ListView  HorizontalAlignment="Left" Name="listView1">
        <ListView.View>
         <GridView>
            <GridViewColumn Width="140" Header= "CourseID" />
            <GridViewColumn Width="140" Header= "Title" />                
         </GridView>
        </ListView.View>
    </ListView>
</Grid>


我将使我的父数据模型包含子数据模型的集合,并将子
组合框
绑定到父
组合框

例如,您的
讲师
模型将包含

int InstructorId string FirstName string LastName DateTime HireDate List Courses
我不确定我是否理解你的要求。您只是想知道为什么您当前的代码没有在ListView中显示任何课程吗?如果是这样,那么您的问题是您在设置ItemsSource时正在设置ListView的DataContext。在添加新课程之前,您可能还需要清除课程列表:

private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    courses.Clear();
    ...

    this.listView1.ItemsSource = null; // ItemsSource instead of DataContext
    this.listView1.ItemsSource = courses;
}
编辑 您还必须将DisplayMemberBindings添加到GridViewColumns:

<GridViewColumn 
    Width="140" 
    Header="CourseID" 
    DisplayMemberBinding="{Binding CourseID}" /> <!-- Here -->
<GridViewColumn 
    Width="140" 
    Header="Title" 
    DisplayMemberBinding="{Binding Title}" /> <!-- And Here -->


我的答案的第一部分有帮助吗?我使用了ItemSource并在ListView列中显示了我的名称空间School.Course。有什么我遗漏的吗?
<GridViewColumn 
    Width="140" 
    Header="CourseID" 
    DisplayMemberBinding="{Binding CourseID}" /> <!-- Here -->
<GridViewColumn 
    Width="140" 
    Header="Title" 
    DisplayMemberBinding="{Binding Title}" /> <!-- And Here -->