多対多のテーブルがあり、WPFコントロールのいくつかのフィールドを表示したいと思います。
List<Course> courses = new List<Course>()
コンボボックスでInstructorIDを選択するたびに、リストコレクションに入力するにはどうすればよいですか?ListViewコントロールのリストからCourseIDとTitleのみを表示したい
これが私のコードです:
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;
}
}
そしてウィンドウ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>