如果在将 AllTheCategories.SelectedItem 转换为字符串之前,它的类型是 Autodesk.Revit.DB.Category,那么您应该像这样使用它。
ElementCategoryFilter filter = new ElementCategoryFilter();
public void Button_Click(object sender, RoutedEventArgs e)
{
// selected type should be Category
var selected = AllTheCategories.SelectedItem;
filter = new ElementCategoryFilter(selected.Id);
}
如果不是,那么我猜您正在访问 ComboBox.SelectedItem 属性,这是一种错误的方法,您应该检查 MVVM 模式和数据绑定。
但是,还有另一种获取类别 ID 的方法是通过 BuiltInCategory 枚举和 Document
像这样
Document doc = /* some code to get document */;
ElementId categoryId =
doc.Settings.Categories.get_Item(BuiltInCategory.OST_DuctAccessory /* or any category you want */).Id;
ElementCategoryFilter collector = new ElementCategoryFilter(categoryId);