복잡한 분리 된 WPF 응용 프로그램에서 발현 블렌드를 사용하기위한 전략은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/820547

  •  03-07-2019
  •  | 
  •  

문제

나는 Visual Studio, C# 및 XAML을 주로 손으로 코딩하는 MVVM 패턴으로 WPF 응용 프로그램을 수행하고 있습니다.

이제 GUI를 사용하여 WPF 응용 프로그램을 빠르게 클릭 할 수 있도록 Expression Blend로 속도를 내 렸습니다. 이는 모든 XAML 요소를 80%로 돌리는 것보다 훨씬 좋은 레이아웃을 훨씬 더 잘 제어 할 수 있습니다.

그러나 표현식 블렌드의 내 응용 프로그램은 코드 뒤에서 처리되는 이벤트를 사용하여 더 간단하고 반드시 결합 된 것으로 보입니다.

이 더 간단한 표현식 접근 방식에서 뷰, 뷰 모델, 라우팅 된 이벤트 및 명령 등으로 디퍼링 된 MVVM 응용 프로그램으로 어떻게 진행될 것인지 상상하기 어렵습니다. 전체 프로젝트를 Visual Studio로 가져 가서 블렌드에서 더 이상 시각적으로 편집 할 수는 없지만 블렌드를 사용하여 비주얼 스튜디오에 붙여 넣을 작은 XAML 조각을 만들 수 있습니다.

Expression Blend를 사용하여보다 복잡한 응용 프로그램으로 작업하는 사람들을 위해, 프로젝트를 MVVM 방식으로 분리시키는 전략은 무엇입니까? 신청서의 전체 부분은 시각적으로 의미가있는 방식으로) 규모의 블렌드 GUI에서 계속 편집 할 수 있도록?

도움이 되었습니까?

해결책

나는 가장 먼저 블렌드를 빠른 프로토 타이핑 도구로 사용하고 있습니다. 이를 위해 나는 그것을 정말로 좋아합니다. 특히, 나는 내가 원하는 레이아웃/동작을 얻기 위해 물건을 설정하는 방법을 잘 모르면 매우 도움이된다고 생각합니다.

나는 주요 프로젝트 파일을 Blend에서 직접 편집하지 않습니다. 나는 그것이 불필요하게 복잡하거나 장황한 마크 업을 만듭니다. 또한 WPF/XAML에 더 익숙해지면서 블렌드를 점점 더 적게 사용하고 있습니다.

다른 팁

버전 1 이후 프로젝트의 UI에 Blend를 사용해 왔습니다. 내 목표는 디자이너를 프로젝트에 완전히 통합하는 것입니다. 저는이 목표를 달성하는 모든 것을 통해 쟁기질을했습니다. 지금은 MVVM을 한동안 알지 못하지만 지금은 자연스럽게 같은 결론에 도달했으며 패턴이 있다는 것을 알지 못하고 뷰 모델을 만들고 있습니다. 이제 MVVM을 향해 노력하는 다른 사람들의 도움으로 항상 더 좋아지고 있습니다. 나는 이제 Rich UI와 모든 UI가 혼합 된 기능을 갖춘 3 개의 응용 프로그램을 개발했습니다. Josh Smith의 MSDN 기사를 읽고 Jason Dolinger의 작품을보십시오. Karl Shifflett의 작품은 몇 가지를 언급하십시오.

icommand, inotifyPropertyChanged, ObservAbleCollections를 면밀히 살펴보십시오.

또한 뷰 모델에서 컨트롤을 조작하는 방법을 찾으십시오. 예를 들어, icollectionView가 있습니다. 동물 목록이 있다고 가정하고 (새, 포유류 등) 여과하려는 유형 세트가 있다고 가정합니다.

Icommand 및 IcollectionView를 사용하면 디자이너가 동물을 표시하기 위해 ListBox를 만들 수있는 곳과 필터 목록을 표시하는 메뉴를 충분히 제어 할 수 있습니다. iCollectionView에는 현재 선택 사항이 무엇인지 알기에 충분한 기능이 있으며 "SortBybird", "SortBymammal"등에 대한 ICOMMAND 기반 명령이있는 경우 디자이너가 메뉴를 만들 때 (창의 컨텍스트가 귀하의 뷰 모델이라고 가정합니다. 이 창)은 디자이너에게 적절한 옵션을 바인딩 할 수 있습니다.

저는 현재 회사의 다른 팀과 함께 내 프로젝트가 어떻게 설정되었는지 설명하고 있으며 블렌드를 사용하여 디자이너의 새로운 역할에 긍정적으로 대응하고 있습니다.

나는 그것을 위해 블렌드 엔드에서 끝까지 성공적으로 사용할 수 없었습니다.

일반적인 경우에는 vs에서 XAML을 수작업으로 편집하는 것이 더 빠릅니다 (예 : 예외는 비표준 브러시가 포함 된 내용이 포함됩니다). 블렌드는 매우 클릭이 매우 기뻐하며 실제로 맨 위에 빠지지 않습니다.

블렌드가 실제로 유용한 또 다른 영역은 기존 컨트롤에서 스타일/템플릿을 만드는 것입니다.

그 외에는 아직 팔리지 않았습니다. 코드에 연결된 DataContexts를 사용할 때 기능이 떨어지므로 도움이되지 않으며 쓸모없는 마크 업, 정적 크기 등을 생성하는 경향이 있습니다.

블렌드는 일을 어떻게 수행 할 수 있는지에 대한 아이디어를 제공하는 데 유용하지만, XAML은 끔찍하고 단단히 결합됩니다. XAML 측면을 더 잘 배울 때 사용 블렌드보다 XAML을 작성하는 것이 훨씬 빠릅니다. 당신이 그 시점에 도달 할 때까지 당신은 블렌드를 변경할 수 있지만 XAML을 덜 단단히 결합하여 외부 UI 요소를 제거하기 위해 생성하는 XAML을 리팩터해야합니다.

나는이 파티에 조금 늦었지만 누군가가 여전히 응답 할 수 있기를 바랍니다. 아직 디자이너와 프로그래머 사이에 라인을 그리는 프로세스를 간략하게 설명하는 검색 결과를 찾지 못했습니다. 그것의 첫 번째 부분은 MVVM이므로 GUI와 기본 "비즈니스 논리"사이에 커플 링이 없으며 지금 당장 배우는 데 열심히 노력하고 있습니다. 내가 아무도 쓰지 않은 다른 부분은 개발자가 기본적으로 GUI DLL을 제공하고 응용 프로그램의 GUI가 마술처럼 변경 될 수 있도록 실제로 Blend에서 프로젝트를 디자인하는 방법입니다.

개발자는 평소와 같이 자신의 코드를 작성하고 모든 것이 예상대로 작동하는 매우 기본적인 GUI를 작성합니다. 한편, 디자이너는 사람들이 기대했던 모든 유용성 기능으로 멋진 작은 GUI를 만들고 있습니다. 이제 개발자는 GUI로 응용 프로그램을 실행할 수 있지만 디자이너의 GUI로 전환 할 수도 있습니다.

그것이 즉시 할 수 없다면, 그것이 이상적인 경우, 개발자가 자신의 Vs 솔루션을 가질 것이라는 이상적인 경우에 블렌드 솔루션에서 XAML을 포함한다는 것을 의미합니까? 그런 다음 app.xaml에서 다른 시작 파일을 참조하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top