c# - 使用什么技术在“选择更改”上显示不同的(对象类)道具
问题描述
大家好,有人可以给我一个提示,使用什么技术来显示具有“选择更改”事件的不同类型对象的道具ListBox
。例如,我有一个Veichle
从 Car Buses 等继承的类,如果我想在DataGrid
该对象中显示道具,我面临一个问题,我必须为每个对象设置“if 子句”,并且我必须将其转换为适当的类型是。感谢您提前提供任何帮助。
private void veichleLst_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
{
cars = new List<Car>();
buses = new List<Bus>();
this.selectDateLbl.Visibility = Visibility.Hidden;
if (veichleLst.SelectedItem is Car) < -- #1 if check the type of the object
{
cars.Add((Car)veichleLst.SelectedItem);
this.veichleGrd.ItemsSource = cars;
this.choosedCarLbl.Content = this.veichleLst.SelectedItem;
subOrder._Order.Veichle = (Car)this.veichleLst.SelectedItem;
if (isDateSelected == true)
{
subOrder._Order.changeVeichleHandler += veichle_change;
}
}
else if (veichleLst.SelectedItem is Bus) < -- #2 if check the type of the object
{
buses.Add((Bus)veichleLst.SelectedItem);
this.veichleGrd.ItemsSource = buses;
subOrder._Order.Veichle = (Bus)this.veichleLst.SelectedItem;
if (isDateSelected == true)
{
subOrder._Order.changeVeichleHandler += veichle_change;
}
this.choosedCarLbl.Content = this.veichleLst.SelectedItem;
}
}
解决方案
由于您似乎对两种(所有?)veichle 类型都做了同样的事情,您可以将其SelectedItem
转换为 a Veichle
:
private void veichleLst_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
{
this.selectDateLbl.Visibility = Visibility.Hidden;
if (this.veichleLst.SelectedItem is Veichle veichle)
{
subOrder._Order.Veichle = veichle;
if (isDateSelected == true)
{
subOrder._Order.changeVeichleHandler += veichle_change;
}
this.choosedCarLbl.Content = veichle;
this.veichleGrd.ItemsSource = new List<Veichle>(1) { veichle };
}
}
如果要访问特定类型的某些特定属性,则必须强制转换为该特定类型。