Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.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# 组合框selectedValue更改所有项目属性_C#_Wpf_Entity Framework_Data Binding_Mvvm - Fatal编程技术网

C# 组合框selectedValue更改所有项目属性

C# 组合框selectedValue更改所有项目属性,c#,wpf,entity-framework,data-binding,mvvm,C#,Wpf,Entity Framework,Data Binding,Mvvm,我有一个带有“Cars”的listview和一个显示listview所选汽车“Gas”的组合框: <ListView ItemsSource="{Binding CarList}" SelectedItem="{Binding SelectedCar}" /> <ComboBox ItemsSource="{Binding GasList}" DisplayMemberPath="Name" SelectedValue="{B

我有一个带有“Cars”的listview和一个显示listview所选汽车“Gas”的组合框:

<ListView ItemsSource="{Binding CarList}" SelectedItem="{Binding SelectedCar}" />
<ComboBox ItemsSource="{Binding GasList}"
             DisplayMemberPath="Name"
             SelectedValue="{Binding SelectedCar.Gas.ID}"
             SelectedValuePath="ID"/>

My Main ViewModel管理“CarList”和“SelectedCar”属性:

public class MainViewModel : ViewModelBase
{
    public ObservableCollection<Car> CarList { get; set; }

    private Car selectedCar;
    public Car SelectedCar
    {
        get { return selectedCar; }
        set
        {
            if (selectedCar != value)
            {
                selectedCar = value;
                RaisePropertyChanged("SelectedCar");
            }
        }
    }

    public MainViewModel()
    {
        IList<Car> tempList;

        using (var ctx = new CarDBFirstEntities())
        {

            var car = ctx.Cars
                .Include("Gas")
                .ToList();

            tempList = (IList<Car>)car;
        }


        CarList = new ObservableCollection<Car>();

        //Convert LINQ list to ObservableCollection
        foreach (Car c in tempList)
            CarList.Add(v);

    }
}
public类MainViewModel:ViewModelBase
{
公共可观测集合CarList{get;set;}
私家车选择私家车;
公共汽车
{
获取{return selectedCar;}
设置
{
如果(selectedCar!=值)
{
selectedCar=值;
RaisePropertyChanged(“选定车辆”);
}
}
}
公共主视图模型()
{
圣殿骑士团;
使用(var ctx=new CarDBFirstEntities())
{
var car=ctx.Cars
.包括(“天然气”)
.ToList();
圣殿骑士=(IList)汽车;
}
CarList=新的可观测集合();
//将LINQ列表转换为ObservableCollection
foreach(圣殿骑士中的c车)
添加(v);
}
}
我的CarViewModel(从我的窗口调用)源自MainViewModel和manage“GasList”属性:

public class CarViewModel : MainViewModel
{
    public ObservableCollection<Gas> GasList { get; set; }

    public CarViewModel()
    {
        IList<Gas> tempList;

        using (var ctx = new CarDBFirstEntities())
        {
            var gas = ctx.Gas.ToList();

            tempList = (IList<Gas>)gas;
        }

        GasList = new ObservableCollection<Gas>();

        //Convert LINQ list to ObservableCollection
        foreach (Gas g in tempList)
            GasList.Add(g);

    }
}
public类CarViewModel:MainViewModel
{
公共ObservableCollection气体列表{get;set;}
公共汽车视图模型()
{
圣殿骑士团;
使用(var ctx=new CarDBFirstEntities())
{
var gas=ctx.gas.ToList();
圣殿骑士=(IList)气体;
}
GasList=新的ObservableCollection();
//将LINQ列表转换为ObservableCollection
foreach(圣殿骑士中的气体g)
气体清单。添加(g);
}
}
我使用EF 6,因此以下是我自动生成的poco代理类:

public partial class Car
{
    ...
    public Nullable<int> GasID { get; set; }
    ...

    public virtual Gas Gas{ get; set; }
}

public partial class Gas
{
    public Gas()
    {
        this.Car = new HashSet<Car>();
    }

    public int ID { get; set; }
    public string Name { get; set; }
    ...

    public virtual ICollection<Car> Cars { get; set; }
}
公共部分等级车
{
...
公共可空GasID{get;set;}
...
公共虚拟气体{get;set;}
}
公共部分类气体
{
公共气体()
{
this.Car=新的HashSet();
}
公共int ID{get;set;}
公共字符串名称{get;set;}
...
公共虚拟ICollection Cars{get;set;}
}
嗯,当我在列表视图中选择一辆车时,组合框会显示该车的汽油名称。 问题是,当我更改组合框中的值时,所有具有相同汽油的汽车都会更新。
下面是一个例子:
我有两辆车的汽油值相同(“汽油”)。
我在listView中选择第一个并更改combobox值(例如改为“diesel”。
然后,如果我在listview中选择第二个,组合框也会显示“diesel”

正如我所理解的,我的组合框只是改变了汽油的ID,而不是所选汽车的ID。汽油,所以问题就从这里来了(我猜)

我尝试了很多方法,比如在我的组合框中用“SelectedValue”替换“SelectedValue”,如果我在我的poco代理气体类中,它会工作,但它是一个自动生成的类,所以我认为这不是一个好方法


希望你能帮助我:)

如果这是答案的话

这只是一个参考

foreach (Gas g in tempList) GasList.Add(g); 
每辆车都需要换新的

向气体中添加气体检测器

foreach (Gas g in tempList) GasList.Add(new Gas(g)); 

这只是一个参考。foreach(圣堂武士中的气体g)气体列表。添加(g);每辆车都需要新的。谢谢你的回答,但我不明白你的意思。给汽油加一个汽油机。foreach(圣堂武士中的气体g)气体列表。添加(新气体(g));我试过了,但没什么改变。就是这样:)谢谢