gpt4 book ai didi

C# WPF - materialdesign 包会影响数据网格的功能吗?

转载 作者:太空宇宙 更新时间:2023-11-03 22:33:24 28 4
gpt4 key购买 nike

我想将数据网格中的选定行显示到文本框中,所以我得到了这个视频:https://www.youtube.com/watch?time_continue=127&v=SDUt4y-H-nw .我一步一步跟着它,但是当我测试它时,它不起作用(它不将数据网格中的数据显示到文本框中)。这是我的代码:

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();
}
}

我的猜测是因为我使用的是 Material 设计包...这是真的吗?或者这是我的代码?如果是我的代码,请随时提出建议。

最佳答案

您的 DataGrid 已绑定(bind)到数据源。如果是这样的话,下面这行会引起麻烦:

DataRowView row_selected = dg.SelectedItem as DataRowView;

对于绑定(bind)控件,SelectedItem 是基础集合项的类型,而不是 DataRowView。所以上面的行会将 raw_selected 设置为 null 而下面的代码块将不会执行。您应该将其转换为该类型,然后使用该项目的属性直接填充您的文本框。

我对您的建议是了解 MVVM。您的 VM 层应该公开一个用于将 ItemSource 绑定(bind)到它的集合类型属性,以及另一个用于绑定(bind) SelectedItem 的属性。然后您将能够使用这第二个属性来绑定(bind)您的文本框。无需使用 SelectionChanged 事件。事实上,Window代码隐藏文件中绝对不会有用户代码。

编辑

如果你想坚持使用事件处理方法,你需要做的就是将上面的行替换为:

var row_selected = dg.SelectedItem as Booking;

我假设您在 bookings 集合中的项目的数据类型是 Booking。如果是其他名称,请使用该类型名称。

关于C# WPF - materialdesign 包会影响数据网格的功能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56243908/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com