[英]Revit API: how to put revit links to Combobox
我是 Revit API 的新手。 而且我在组合框中的方法中看不到 Revit 链接。
public static IList<Document> GetAllRevitLinkInstances(ExternalCommandData commandData)
{
UIApplication uiapp = commandData.Application;
UIDocument uidoc = uiapp.ActiveUIDocument;
Document arDoc = uidoc.Document;
FilteredElementCollector collector = new
FilteredElementCollector(arDoc);
collector.OfClass(typeof(RevitLinkInstance)).ToList();
IList<Document> linkedDocs = new List<Document>();
foreach (Element elem in collector)
{
RevitLinkInstance instance = elem as RevitLinkInstance;
Document linkDoc = instance.GetLinkDocument();
linkedDocs.Add(linkDoc);
// linkedDocs.Add(string.Format("{0}.rvt",
linkDoc.Title.ToString()));
//linkedDocs.AppendLine("FileName: " + Path.GetFileName(linkDoc.PathName));
//RevitLinkType type = arDoc.GetElement(instance.GetTypeId()) as RevitLinkType;
//linkedDocs.AppendLine("Is Nested: " + type.IsNestedLink.ToString());
}
return linkedDocs;
}
在 MVVM 中,我使用:
public Document SelectedLinkedInstances { get; set; }
public IList<Document> LinkedInstances { get; } = new List<Document>();
public MainViewViewModel(ExternalCommandData commandData)
{
_commandData = commandData;
SaveCommand = new DelegateCommand(OnSaveCommand);
LinkedInstances = LinkUtils.GetAllRevitLinkInstances(commandData);
}
但在 ComboBox 最后我只看到空行。 因此,在 ComboBox 中看不到文档。 可能有人面临同样的问题? 在此处输入图像描述
我认为您可能有两个主要问题。 我以前没有见过FilteredElementCollector
类的.ToList()
,你可能想要.ToElements()
- 它给你一个IList<Element>
ToElements RevitAPIDocs
您也没有显示 XAML(假设这里有一些东西)。 检查您是否将该列表正确绑定到窗口中。 我通常在代码中设置项目源,所以很简单,例如:
LinkedInstances = LinkUtils.GetAllRevitLinkInstances(commandData);
LinkedDocsComboBox.Items = LinkedInstances;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.