WPF 사용자 지정 컨트롤을 개발하여 무선 메쉬 네트워크의 노드 레이아웃과 연결을 표시해야합니다. 사용자는 노드를 드래그 할 수 있어야합니다. 요소가 사용 가능한 공간에서 떨어진다면 캔버스가 커지고 스크롤 막대가 필요합니다. 확대/축소 기능이 필요할 수 있습니다. 첫 번째로 취한 것은 ListBox에서 파생 된 CustomControl을 Canvas 기반 ItemsPanelTemplate과 함께 사용하는 것입니다. 조쉬 스미스 (Josh Smiths) DragCanvas를 사용하여 캔버스의 UIElements 자식을 드래그 할 수있게 해줌. 내 "노드"클래스는 현재 UIElement 파생되지 않습니다 (DragCanvas는 현재 내 노드를 래핑하는 ListBoxItems로 작업 중입니다).
1. 이것은 현명한 판단 방법입니까, 아니면 ListBox 아이디어를 무시하고 더 낮은 수준으로 진행해야합니까?
2. Inter 노드 링크 라인을 오버레이해야합니다. ControlTemplate의 일부인 UIElement 클래스와 같이 어떻게해야하는지 현재 알지 못합니다.
3. 몇 사람이 두통을 앓고있는 것 같습니다. 캔버스의 스크롤바 - 이것이 문제가 될까요?
일반 또는 특정 조언을 가장 높이 평가합니다. WPF CustomControl 디자인 조언
1
A
답변
1
와우, 컨트롤로서 나쁘지 않습니다!
나는 비슷한 것을하고있다. 그러나 그렇게 간단하지는 않다.
1) IMHO, DragCanvas는 요소를 호스트하고 드래그하는 기본 방법입니다. 레이블 (노드), 호 및 레이블 (호의 무게)을 다시 호스트해야하므로 드래그 캔버스는 사용자 정의 컨트롤을 직접 작성하는 것보다 어렵다고 생각합니다.
템플릿으로는 모든 것이 쉽지 않습니다. 때로는 "이전"방식 인 winforms와 유사하거나 심지어 하이브리드 방식이 훨씬 좋습니다.
2) 언급 한대로 Canvas에서 파생 된 패널을 만들어 여러 개의 UIElements (레이블, 호 등)를 호스팅합니다. 모두 모델 + 뷰 모델에 의해 관리되어야합니다. 처음에는 조금 더 힘들지 만 앞으로는 많은 만족과 유연성을 제공 할 것입니다.
3) 캔버스가 두통을 줄 것이라고 생각하지 않습니다! 요소로 가득 찬 캔버스는 항상 크기가 0입니다. 이는 스크롤 뷰어를 추가하려는 사람들에게 두통을 안겨줍니다.
위의 Canvas 파생 클래스는 MeasureOverride 메서드를 재정 의하여 해당 크기가 호스트 된 개체에 맞도록합니다. 그러나 음의 좌표를 사용할 수 없다는 점이 약간 짜증납니다 (스크롤링 문제가 발생할 것입니다).
비슷한 "편집기"의 모든 작업을 몇 줄에 걸쳐 설명하기 란 어렵습니다. 그 일은 쉽지 않고 많은 것이 문제입니다.
어쨌든 도움이 되길 바랍니다.
건배
관련 문제
- 1. WPF CustomControl - Resources 속성
- 2. WPF CustomControl 및 이미지 바인딩
- 3. UITabBarController UINavigationController 디자인 조언
- 4. ListAdapter 디자인 조언
- 5. 인터페이스 아키텍처 디자인 조언
- 6. 응용 프로그램 디자인 조언
- 7. 디자인 패턴 조언
- 8. 소켓 서버 디자인 조언
- 9. SQL 테이블 디자인 조언
- 10. JSP 메뉴 디자인 조언
- 11. UI 디자인 도움말/조언
- 12. Caching Proxy 디자인 조언
- 13. SQL 테이블 디자인 조언
- 14. xml 파서에 대한 디자인 조언
- 15. 개발자를위한 iPhone 그래픽 디자인 조언
- 16. Silverlight CustomControl 루트 요소
- 17. 클래스 디자인, 상속/집계에 대한 조언 요청
- 18. 아키텍처/디자인 테스트 프로그램에 대한 조언
- 19. Python으로 실시간 시리얼 데이터 로깅 - 디자인 조언
- 20. ASP.NET 웹 응용 프로그램 아키텍처 디자인 조언
- 21. 전략적인 조언 : 웹 응용 프로그램 디자인 업그레이드
- 22. 여러 스레드에서 데이터베이스 큐 처리 - 디자인 조언
- 23. 복잡한 SQL 디자인, 도움/조언 필요
- 24. WPF 레이블 디자인
- 25. 새내기 wpf 디자인 질문
- 26. WPF .NET의 디자인 질문
- 27. WPF 디자이너 : 디자인 프로세스는 무엇입니까?
- 28. WPF Windows를 무료로 디자인 하시겠습니까?
- 29. WPF 용 데이터 템플릿 디자인
- 30. WPF 그래픽 디자인 용 도구
안녕하세요 Mario - 의견을 보내 주셔서 감사합니다. 예, DragCanvas에 대한 의견에 동의합니다. 2)에서 귀하의 의견에서 나는 당신이 ListBox베이스를 abondone하고 캔버스에서 직접 customcontrol을 파생시킬 것이라는 의미로 읽을 수 있습니까? 한 손으로 ListControl 또는 ItemsControl을 선택 등을 위해 유용하다고 생각하지만, 다른 손으로 말하면 요소 (호와 호 무게) 사이의 상호 작용이있는 모델에는 꼭 들어 맞지 않습니다. – Ricibob
ItemsControl이 고유 한 객체 집합 (예 : 노드)을 매핑하지만 자체 가중치를 사용하여 호를 매핑해야하는 문제 자체. 그들은 같은 컨트롤이 아니므로 두세 개의 ItemsControl을 함께 사용해야하며 사용자 정의 솔루션을 사용하는 대신 성가신 것으로 느낍니다. 저는 WPF와 그 접근법을 정말 좋아하지만 언젠가는 과잉입니다. –
알았어요. 캔버스에서 직접 컨트롤을 파생시키고 객체 (노드 및 호/링크)를 스스로 관리하는 방법을 살펴 보겠습니다. 어떻게 보일지 그리고 다른 사람이 입력 사항을 볼 수 있는지 보겠습니다. 건배. – Ricibob