내 Revit Add 기능 중 하나를 다시 작성하여 WPF를 Windows Forms보다 모양과 기능이 좋기 때문에 MVVM과 함께 WPF를 사용하도록 수정하고 싶습니다.WPF Revit의 최적 시작점
Jeremy Tammik의 Revit Template Wizzard를 Form 기반의 추가 기능에 사용했지만 WPF 사용자 정의 컨트롤을 추가해도 작동하지 않는 것 같습니다 (런타임 오류로 인해 xaml 리소스를 찾을 수 없음).
예를 들어 (Excel 스프레드 시트에서 자료를 추가 할 AddMaterials, here is the github link) WPF MVVM revit add가 발견되었지만 최상위 레벨에서 볼 것으로 예상되는 내용을 따르지 않습니다.
- Revit Add에는 Revit에 DLL 등록 및 액세스 방법 (리본 패널 버튼 등)을 알려주는 app.cs 파일이 있습니다.
- Windows WPF 앱은 app.xaml을 최상위 엔트리 포인트로 사용합니다.
- Add Materials 프로젝트에는 클래스 라이브러리가 있어야한다는 메시지가 표시되지 않지만보기는 UserControls 을 사용하지 않고 선호하는 Windows입니다. 그러나 Visual Studio에서는 클래스 라이브러리 형식 프로젝트에 대한 창을 추가 할 수 없습니다.
세 번째 문제는 단순히 WPF 응용 프로그램 프로젝트의 창을 클래스 라이브러리 프로젝트로 복사하면 쉽게 해결됩니다. 그러나 클래스 라이브러리가 템플릿에서 app.cs 코드를 따르지 않고 Revit에서 인스턴스화하는 방법을 실제로 이해하지 못합니다. 다른 사람이 이런 식으로 추가 기능을 만들 수 있습니까? 그렇다면 어떤 트릭이나 토론에 도움이 될 수 있습니까? 누구든지 Visual Studio 용 WPF Revit 추가 기능 템플릿을 만들었습니까?
WPF 창을 추가하고 인스턴스화하려고하면 xaml 리소스 (System.IO.IOException : 리소스 'xxxx.xaml'을 찾을 수 없음)를 찾을 수 없다는 오류가 발생합니다. 나는이 오류에 대한 인터넷 검색 때 발견 된 조언에 따라이 문제를 해결하려했지만 아무 소용이 없습니다. 나는 폼 기반 프로젝트에 있다고 생각하고 있으며 폼이없는 새로운 프로젝트로 시작해야 할 수도 있습니다.
이제 Revit AddIn Wizzard로 시작하여 WPF를 사용할 수 있다는 것을 확인했습니다. . . 나는 처음부터 시작하여 다른 프로젝트에서 생성 된 창에서 복사하여 실행하도록했습니다 (다양한 참조, 네임 스페이스 등을 추가 한 후). 그래서 제 문제는 폼팩터가 이미 추가 된 원래 프로젝트의 문제인 것으로 보입니다.
의견을 보내 주셔서 감사합니다. 나는 당신의 요점을 이해하고, 특히 제 질문의 틀을 잡는 방법에 도움이되는 것을 찾습니다. Revit의 측면에서 IExternalApplication 클래스는 리본 패널 버튼으로 등록 된 추가 기능을 가질 수있는 곳입니다. . . WPF 추가 기능에이 기능이 있습니까? Add Materials가 없기 때문에 물어 봅니다. 코드를 추가하더라도 코드를 무시하는 것 같습니다 (OnStartup을 사용하여이 작업을 수행함). –
@PaulGibson AddMaterials는 단일 명령을 사용합니다. IExternalCommand,이 명령은 var window = new MaterialsView {DataContext = browser}를 호출합니다. 창을 만들 수 있습니다. 이 명령은 .addin 파일에서로드됩니다. 내가하는 것처럼 IExternalApplication을 사용하면 OnStartup을 통해 명령을 추가 할 수 있습니다. AddMaterials에 대한 .addin을 보면이 행이 있습니다 : AddMaterials.Command FullClassName>. 예를 들어 "newApp"라는 IExternalApplication을 추가하면 newNamespace.newApp FullClassName>을 추가합니다. –
0w3n
Doh! 나는 그것을 여러 번 보았지만 그것을 잡지 못했다! –