C#WPF-材料设计包是否会影响datagrid的功能?
我想将datagrid中的选定行显示到文本框中,因此我最终得到了以下视频:。我一步一步地遵循它,但当我测试它时,它不起作用(它不会将数据网格中的数据显示到文本框中)。这是我的代码:C#WPF-材料设计包是否会影响datagrid的功能?,c#,wpf,C#,Wpf,我想将datagrid中的选定行显示到文本框中,因此我最终得到了以下视频:。我一步一步地遵循它,但当我测试它时,它不起作用(它不会将数据网格中的数据显示到文本框中)。这是我的代码: private void DGBookings_SelectionChanged(object sender, SelectionChangedEventArgs e) { DataGrid dg = (DataGrid)sender; DataRowV
private void DGBookings_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
DataGrid dg = (DataGrid)sender;
DataRowView row_selected = dg.SelectedItem as DataRowView;
if (row_selected != null)
{
textBoxKlant.Text = row_selected["Naam"].ToString();
dpIncheck.Text = row_selected["Incheckdatum"].ToString();
dpUitcheck.Text = row_selected["Uitcheckdatum"].ToString();
dpHotelLocatie.Text = row_selected["Hotel"].ToString();
dpAantalPersonen.Text = row_selected["Aantal_personen"].ToString();
dpMedewerker.Text = row_selected["medewerkerid"].ToString();
}
}
我猜是因为我用的是材料设计包。。。这是真的吗?还是我的密码?如果是我的代码,请随意给出建议。您的
数据网格
绑定到数据源。如果是这种情况,以下线路将导致故障:
DataRowView row_selected = dg.SelectedItem as DataRowView;
对于绑定控件,SelectedItem
属于基础集合项的类型,而不是DataRowView
。因此,上面的行将raw_selected
设置为null
,下面的代码块将不会执行。您应该将其转换为该类型,然后直接使用该项的属性填充文本框
我的建议是了解MVVM。您的VM层应该为绑定ItemSource
而公开一个集合类型属性,并为绑定SelectedItem
而公开另一个属性。然后,您将能够使用第二个属性绑定文本框。无需使用SelectionChanged
事件。事实上,窗口代码隐藏文件中绝对并没有用户代码
编辑
如果您想坚持使用事件处理方法,则只需将上面的行替换为以下内容:
var row_selected = dg.SelectedItem as Booking;
我假设
bookings
集合中项目的数据类型为Booking
。如果是其他类型,请使用该类型名称。您的DataGrid
是否绑定到数据源?@dotNET它是这样的DGBookings.ItemsSource=bookings代码>是的,我想这会是一个很好的例子。看我的答案。你能用我给你的代码举个例子吗?还是你还需要更多?当你能做到这一点时,我会记下你的答案;)因此,Itemsource
?@portalstudent是不可能的。学生:我对bookings
收藏一无所知。它是什么类型的?其项目的类型是什么?如果您想坚持使用事件处理方法,则只需在代码中更改上一行中的wordDataRowView
,并将其替换为项目的类型。将其更改为该行仍不起作用:(我有此错误:无法使用[]应用索引)在这些行上键入'Booking'
的表达式:textBoxKlant.Text=row_selected[“Naam”].ToString();
row_selected[“Naam”]