我有这个错误。
第一个错误:
扩展方法必须是静态的
第二个错误:
' System.Windows.Controls.ComboBox'不包含的定义 ' GetClientItemId'没有扩展方法' GetClientItemId'验收 类型为' System.Windows.Controls.ComboBox'的第一个参数。可能 发现(您是否缺少using指令或程序集引用?)
我尝试将静态应用于我的父类,如:
之前 -
public partial class pgRPhase : Window
之后 -
public static partial class pgRPhase : Window
但我接收到其他错误和问题。
WPF编码 -
private async Task LoadRep(TruckServiceClient TSC, ComboBox combobox)
{
List<ClientItems> clientItems = new List<ClientItems>();
foreach (var rep in await TSC.GetRepByCompAsync())
clientItems.Add(new ClientItems { Id = rep.Id, Name = rep.Name, Contact = rep.ContactNumber, Email = rep.Email, CompanyId = rep.CompanyId });
combobox.ItemsSource = (clientItems.ToArray().Where(x => x.CompanyId == cbCustomer.GetClientItemId()));
combobox.IsEnabled = true;
combobox.SelectedIndex = 1;
combobox.DisplayMemberPath = "Id";
}
public static int GetClientItemId(this ComboBox combobox)
{
if (combobox.SelectedItem == null)
return 0;
else
return ((ClientItems)combobox.SelectedItem).Id;
}
答案 0 :(得分:2)
您必须将GetClientItemId
放在一个单独的班级中并制作该班级static
。 (扩展方法需要在静态类中)
通过使Window
类保持静态,可以破坏整个代码(无法实例化窗口的实例,这是WPF工作所必需的)。如果您拆分该方法,它将起作用。
注意:使这个扩展方法很好,但当你只使用GetClientItemId(cbCustomer)
调用的常规方法时,它可能会运行得很好。那你就不需要另一个班了。