Ich versuche eine ComboBox.SelectedItem
zu verwenden, um auf einem DataGrid
zu filtern, jedoch habe ich ein Problem beim Zugriff auf SelectedItem
als string
. Das habe ich bisher versucht;Filter auf ComboBox Ausgewähltes Objekt als String
foreach (ComboBoxItem cItem in departmentComboBox.ItemsSource)
{
if (departmentComboBox.SelectedItem != null)
{
criteria.Add(new Predicate<EmployeeModel>(x => x.Department == departmentComboBox.SelectedItem as string));
break;
}
}
Dies führt zu einer Ausnahme;
Additional information: Unable to cast object of type 'System.String' to type 'System.Windows.Controls.ComboBoxItem'.
x.Department
ist vom Typ string
. Wie kann ich auf die SelectedItem
richtig zugreifen, damit ich sie richtig in meiner Filtermethode verwenden kann?
EDIT: Um zu zeigen, wie die ComboBox Elemente hinzugefügt werden;
List<string> distinctList = Employees.Select(i => i.Department).Distinct().ToList();
distinctList.Insert(0, "Everyone");
distinctList.Sort();
departmentComboBox.ItemsSource = distinctList;
Sie können SelectedValue verwenden, wenn es wirklich Zeichenfolge ist. Aber wenn es tatsächlich Ihre Klasse ist, dann verwenden Sie entweder explizite Konvertierung und rufen Sie das benötigte Feld ab (YourDepartmentClass) departmentComboBox.SelectedItem.Name zum Beispiel eather überschreiben Sie YourDepartmentClass.ToString-Methode und verwenden Sie departmentComboBox.SelectedItem.ToString (Überschreiben in String ist eine schlechte Option) – Vladimir
Wie stellen Sie departmentComboBox.ItemSource ein? ItemSource wird verwendet, um die ComboBoxItems zu generieren, Sie können es nicht verwenden, um auf die ComboBoxItems selbst zuzugreifen – Donogst
@Cbreeze danke, ich habe eine Antwort unten hinzugefügt – Donogst