[英]C# Method has 1 parameter but is invoked with 2 arguments
我尝试搜索信息但没有任何运气。
我有几个Classes
,例如CarManufacturerModel
和CarModelModel
。
在CarManufacturerModel
我创建了一些汽车品牌,“Audi、mercedes、bmw”,在CarModelModel
我创建了制造商的不同模型。
我想在CarManufacturerModel
创建一个CarModelModel
的对象,以便我可以在对象声明中添加该制造商的以下模型。 例如,一个制造商可以拥有多个型号、1 系列、2 系列等。
这是 CarModelModel
public class CarModelModel
{
//public string CarModel { get; set; }
public ObservableCollection<string> CarModels { get; set; }
public CarModelModel(/*string carModel*/ObservableCollection<string>carModels)
{
//CarModel = carModel;
CarModels = carModels;
}
public static CarModelModel Create(/*string carModel*/ObservableCollection<string>carModels)
=> new CarModelModel(/*carModel*/carModels);
}
这是 CarManufacturerModel - 注意一些代码被注释掉了
public class CarManufacturerModel
{
public string CarManufacturer { get; set; }
public CarModelModel CarModel { get; set; }
//public ObservableCollection<CarModelModel> CarModels { get; set; }
private CarManufacturerModel(string carManufacturer, /*ObservableCollection<CarModelModel>carModels*/CarModelModel carModel)
{
CarManufacturer = carManufacturer;
//CarModels = carModels;
CarModel = carModel;
}
public static CarManufacturerModel Create(string carManufacturer, /*ObservableCollection<CarModelModel>carModels*/CarModelModel carModel)
=> new CarManufacturerModel(carManufacturer, carModel);
}
这是我声明对象的类 CarManufacturerViewModel
public class CarManufacturerViewModel : ViewModelBase, ICarManufacturerViewModel
{
private string _carYear;
//private CarModelModel _selectedCarModel;
private CarManufacturerModel _carManufacturer;
//private ObservableCollection<CarModelModel> _carModels;
private ObservableCollection<CarManufacturerModel> _carManufacturers;
[DesignOnly(true)]
public CarManufacturerViewModel()
{
CarManufacturers = new ObservableCollection<CarManufacturerModel>
{
CarManufacturerModel.Create("Audi", CarModelModel.Create("1", "2")) <---------------------
};
//SelectedCarManufacturer = CarManufacturers.First();
}
public ObservableCollection<CarManufacturerModel> CarManufacturers
{
get => _carManufacturers;
set
{
SetProperty(ref _carManufacturers, value);
}
}
public CarManufacturerModel SelectedCarManufacturer
{
get => _carManufacturer;
set
{
SetProperty(ref _carManufacturer, value);
//LoadSelectedCar();
}
}
我收到错误消息“方法‘创建’有 1 个参数,但使用 2 个参数调用..
我做错了什么,允许我在同一个对象声明中将多个模型添加到 1 个制造商?
更新
public CarManufacturerViewModel()
{
CarManufacturers = new ObservableCollection<CarManufacturerModel>
{
CarManufacturerModel.Create("Audi", CarModelModel.Create(new string[]{"A1","A2","A3","A4","A5"})),
CarManufacturerModel.Create("Mercedes", CarModelModel.Create(new string[]{"A-Class", "B-Class", "C-Class", "E-Class", "S-Class"})),
CarManufacturerModel.Create("BMW", CarModelModel.Create(new string[]{"1-Serie", "2-Serie", "3-Serie", "4-Serie", "5-Serie"})),
CarManufacturerModel.Create("Volkswagen", CarModelModel.Create(new string[]{ "Golf", "Passat", "Arteon", "T-Cross","Up!"})),
CarManufacturerModel.Create("Volvo", CarModelModel.Create(new string[]{"V60","V70","XC60","XC90","S90"}))
};
//SelectedCarManufacturer = CarManufacturers.First();
}
我现在尝试在我的 ListView 中使用它,但它只显示 string[]array
<ListView Grid.Row="1"
Grid.Column="0"
Margin="0"
ItemsSource="{Binding CarManufacturers}"
SelectedItem="{Binding SelectedCarModel, Mode=TwoWay}">
<ListView.ItemContainerStyle>
<Style BasedOn="{StaticResource ListViewItemBase}"
TargetType="{x:Type ListViewItem}"></Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<Grid Margin="0">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Style="{StaticResource ResourceKey=ComboBoxItemTextBlock}"
Text="{Binding CarModel.CarModelList}"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
CarModelModel 现在看起来像这样。
public class CarModelModel
{
public string[] CarModelList { get; set; }
public CarModelModel(string[]carModelList)
{
CarModelList = carModelList;
}
public static CarModelModel Create(string[]carModelList)
=> new CarModelModel(carModelList);
}
您的CarCarModel.Create
方法:
public static CarModelModel Create(ObservableCollection<string> carModels)
将ObservableCollection<string>
作为其单个参数。
你试图这样称呼它:
CarModelModel.Create("1", "2")
也就是说,您正在尝试传递两个string
参数。 然而,它需要一个ObservableCollection<string>
,所以你需要传递一个ObservableCollection<string>
:
CarModelModel.Create(new ObservableCollection<string>() { "1", "2" });
我会问你是否想在这里使用ObservableCollection<string>
:你通常只在 ViewModel 中使用它们,并且只有当你将它们绑定到 UI 并且你将添加和删除元素时(以及将在某些 UI 元素中显示的添加和删除内容)。
如果您在此处使用字符串数组:
public static CarModelModel Create(string[] carModels)
然后你可以将它声明为一个params
数组:
public static CarModelModel Create(params string[] carModels)
这意味着您可以将其称为:
CarModelModel.Create("1", "2");
编译器会将其转换为为您创建新数组的调用:
CarModelModel.Create(new string[] { "1", "2" });
另外,我认为您的Create
方法不会添加任何内容:只需使用普通构造函数即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.