首页 > 解决方案 > 使用什么技术在“选择更改”上显示不同的(对象类)道具

问题描述

大家好,有人可以给我一个提示,使用什么技术来显示具有“选择更改”事件的不同类型对象的道具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;

    }
}

标签: c#wpf

解决方案


由于您似乎对两种(所有?)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 };
    }
}

如果要访问特定类型的某些特定属性,则必须强制转换为该特定类型。


推荐阅读