Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.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-材料设计包是否会影响datagrid的功能?_C#_Wpf - Fatal编程技术网

C#WPF-材料设计包是否会影响datagrid的功能?

C#WPF-材料设计包是否会影响datagrid的功能?,c#,wpf,C#,Wpf,我想将datagrid中的选定行显示到文本框中,因此我最终得到了以下视频:。我一步一步地遵循它,但当我测试它时,它不起作用(它不会将数据网格中的数据显示到文本框中)。这是我的代码: private void DGBookings_SelectionChanged(object sender, SelectionChangedEventArgs e) { DataGrid dg = (DataGrid)sender; DataRowV

我想将datagrid中的选定行显示到文本框中,因此我最终得到了以下视频:。我一步一步地遵循它,但当我测试它时,它不起作用(它不会将数据网格中的数据显示到文本框中)。这是我的代码:

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
收藏一无所知。它是什么类型的?其项目的类型是什么?如果您想坚持使用事件处理方法,则只需在代码中更改上一行中的word
DataRowView
,并将其替换为项目的类型。将其更改为该行仍不起作用:(我有此错误:
无法使用[]应用索引)在这些行上键入'Booking'
的表达式:
textBoxKlant.Text=row_selected[“Naam”].ToString();
row_selected[“Naam”]