태그 보관물: windows

windows

Windows Forms에서 WPF로 전환

오랫동안 저는 Windows Forms 개발 (VB6에서 시작하여 C # .NET 4.5까지 계속)에 매달 렸으며 Windows Forms가 수행 할 수있는 작업의 한계에 거의 도달했습니다. 둘 다 순수한 .NET을 사용했습니다. 및 네이티브 코드를 사용한 특수 효과.

WPF와 XAML을 배우려고 노력했지만 WPF의 새 디자이너에 갇혀 있습니다. Windows Forms 디자이너와 비교할 때 사용하기가 정말 어려워 보입니다.

Windows Forms 개발자에게 더 적합한 .NET의 WPF 디자이너에 대한 대안이 있는지 알고 싶습니다.



답변

저는 WPF에 대한 초급 기사에 대한 블로그를 좋아하며, 특히 도움이 될만한 몇 가지가 있습니다.

요약하면, Winforms와 WPF의 가장 큰 차이점은 WPF에서는 데이터 계층 ( DataContext)이 응용 프로그램이고 Winforms에서는 UI 계층이 응용 프로그램이라는 것입니다.

다른 방식으로 살펴 보려면 WPF를 사용하면 응용 프로그램이 사용자가 만든 개체로 구성되고 템플릿 및 기타 UI 개체를 사용하여 WPF에 응용 프로그램 구성 요소를 그리는 방법을 알려줍니다.

이는 UI 개체로 애플리케이션을 빌드 한 다음 필요한 데이터를 제공하는 WinForms의 반대입니다.

이 때문에 응용 프로그램 구성 요소가 코드로 설계 되었기 때문에 디자이너는 실제로 그렇게 많이 사용되지 않으며 디자이너는 데이터 클래스를 반영하는 사용자 친화적 인 인터페이스 (일반적으로 ModelsViewModels)

그리고 개인적으로 모든 XAML을 직접 입력하는 것을 선호합니다. 드래그 / 드롭 WPF 디자이너가하는 것만 큼 빠르고 엉망이되지 않기 때문에 가끔 내 UI가 어떻게 보일지 미리보기 위해 디자이너를 사용합니다. 처럼.

따라서 WinForms 개발자에게 적합한 다른 WPF 디자이너가 있는지에 대한 귀하의 질문에 대한 답변에 대해 다른 디자이너를 찾는 대신 WPF가 사용되는 방식으로 WPF를 사용하는 방법을 배우는 것이 좋습니다. WinForms처럼 WPF를 사용하면 그토록 훌륭하게 만드는 많은 부분을 놓치게됩니다. 🙂


답변

일부 사람들은 동의하지 않지만 VS 디자이너를 사용하지 않는 것이 좋습니다. 최소한 인터페이스를 만들지 마십시오. 응용 프로그램을 시작하지 않고 구현의 첫 인상을 할 수 있다면, 같은 긴 더 정교한 것들로 적어도 좋은 뷰어입니다 StylesTemplates사용됩니다. 그러나 IMHO, 드래그 앤 드롭 결과 는 프로토 타입으로 만 사용해야하므로 더 이상 필요하지 않으면 폐기해야합니다.

사용하지 않는 데 중요한 몇 가지 이유가 있습니다.

  1. VS 디자이너는 고정 여백 및 정렬 (레이아웃 컨트롤을 사용하는 경우 일반적으로 필요하지 않음)으로 작업하므로 요구 사항이 변경되면 많은 컨트롤을 터치해야합니다. XAML 및 WPF 메커니즘에 대해 깊이 알고 있다면 모양과 느낌과 관련하여 약간의 노력으로 수정할 수있는 애플리케이션을 만들 수 있습니다.

  2. 디자이너가 xaml을 생성하기 때문에 구성이 최적이 아니며 UI 성능이 저하 될 수 있습니다. 나는 그것을 측정하지 않았다. 그것은 단지 느낌 일 뿐이다.

훨씬 더 나은 대안은 MS Blend 입니다. 그것의 드래그 앤 드롭 결과는 훨씬 더 그 VS 디자이너의 결과입니다.
하지만 매우 강력한 도구로, 매우 강력한 요소를 사용하여 최첨단 UI를 만드는 데 도움이됩니다. 기회에 대한 아이디어를 얻으려면 최소한 짧은 워크샵을 방문하는 것이 좋습니다.

위로 질문 IMHO, 난에 자신에게 좋은 책 등 얻을, 많은 사람들이 동의 할 생각 WPF 해방을 당신이 더 많은 세부 사항에 대해 알고 싶다면, 나중에 WPF 프로 . 와 다른 많은 기능이 있습니다 Winforms. 디자이너를 사용하여 그들을 알 수 없습니다. 그것이 최선의 접근이라고 생각합니다.

또한 이미 몇 가지 일반적인 문제를 해결 하고있는 많은 프레임 워크와 라이브러리 (예 : MVVM light , WPFToolkit ) 가 있다는 것을 고려하십시오 . 따라서 바퀴를 재발 명 할 필요가 없습니다.


답변

나는 이것이 오래된 질문이라는 것을 알고 있지만 이것을 보는 다른 사람들의 이익을 위해 나는 균형을 약간 수정해야한다고 생각합니다. 다른 답변 중 일부를 읽으면 ‘디자이너를 사용하지 마십시오. ‘정서는 제대로 사용하지 않는 데서 나온다.
이 튜토리얼 은 당신을 데려 가고 다른 포스트의 비판에 답하는 데 아주 좋습니다.

예를 들어, 컨트롤을 놓을 때 기본값 인 Winforms와 유사한 여백 기반 레이아웃에서 마우스 오른쪽 단추를 클릭하고 ‘레이아웃 재설정’을 선택하여 WPF 스타일의 스타일로 전환 할 수 있습니다.

이 비디오 는 유사한 근거를 다룹니다.

나는 여전히 VS2010 디자이너를 선호합니다-VS2013은 TabItems ** (현재 프로젝트에서 많이 사용)로 드래그 앤 드롭 할 때 약간 버그가있는 것처럼 보이지만 VS2013 문서 개요보기를 사용하면 해당보기에서 물건을 이동할 수 있습니다. , 실제 플러스가 될 수 있습니다.

하지만 실제로 WPF 및 xaml을 최대한 활용하려면 디자이너보기와 xaml보기 모두에 대해 합리적으로 능숙해야하며 둘 사이를 전환해야합니다. 디자이너에게서 멀어지면 많은 도움이 될 수있는 무언가를 놓치고있는 것입니다.

** 편집-VS 2013 용 업데이트 3에서 개선 된 것으로 보이지만 VS14의 미리보기에서는 지금까지 여전히 이상한 동작이 발생합니다.


답변

우선, Visual Studio deisgner의 WPF (XAML)에서는 항상 xaml 코드를 사용하여 UI를 빌드해야하며 제어 할 수있는 끌어서 놓지 마십시오! 코드를 깨끗하게 유지해야합니다. Expression Blend를 사용하면 도움이 될 수 있습니다. 끌어서 놓기 기능이 더 그래픽 지향적이지만 무료는 아닙니다.

큰 학습 곡선은 아니지만 대안을 찾는 대신 손으로 xaml을 수행하는 방법을 배워야한다고 생각합니다.


답변

나는 당신처럼이 과정을 겪었습니다. 그 후 저는 회사 WPF의 모든 사람들을 가르치고있었습니다. 내가 배운 몇 가지 중요한 교훈과 WPF를 사용하는 사람을 알고있는 모든 사람이 있습니다.

  1. 코드 뒤에있는 UI 컨트롤로 작업하는 경우 …. 그러면 잘못하고있는 것입니다. 코드 뒤에서 UI 컨트롤을 다룰 필요가 전혀 없습니다.
  2. 클릭하는 데 비주얼 개발자가 필요하지 않습니다. XAML 만 처리하면 훨씬 더 생산적입니다. 복사 / 붙여 넣기를 사용합니다. 입력 기능을 신뢰하지 마십시오. 많은 두통을 덜어줍니다.
  3. XAML은 데이터를 찾는 창으로 생각하면됩니다. 뒤에있는 코드에서 데이터를 변경하고 있습니다. XAML에서 UI가 데이터를 해석하는 방법을 정의합니다.
  4. 변환기는 놀랍습니다. 많은 양의 변환기를 확보하자마자 생산성이 하늘 높이 치 솟을 것입니다. 그들은 숨기거나 크기를 조정하는 엄청나게 많은 제어 이벤트 핸들러의 역할을 맡게 될 것입니다.

UI 개발을 재미있게 만듭니다. 특히 Asyc 프로세스와 함께 플레이하는 방법을 알게되면 특히 그렇습니다. Winforms로 인한 많은 두통을 실제로 제거합니다.


답변