Windows Forms에서 WPF로 전환


113

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

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

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


7
나는 일반적으로 디자이너를 사용하지 않고 전체 레이아웃이 내가 기대하는 바인지 확인하기 위해 제외합니다. 결국 저는 모든 것을 XAML로 직접 작성하거나 필요할 때 Blend를 사용합니다. 디자이너는 아니지만 거의 발생하지 않습니다.
Patryk Ćwiek 2013 년

익스프레션 블렌드를 사용할 수는 있지만 이것이 정말 쉽지는 않다고 생각합니다. 개발자 IMO보다 디자이너를위한 것입니다. 나는 일반적으로 미리보기를 끄고 xml로 작업합니다.
BlackICE 2013 년

5
사용하기가 어렵지 않고 단순히 익숙하지 않습니다. 극복해야 할 가장 큰 장애물은 두 기술 간의 패러다임 전환입니다. XAML에 대한 좋은 책을 얻으십시오. 일단 XAML에 익숙해지면 더 이상 디자이너를 사용하지 않을 것입니다. XAML을 직접 입력하게됩니다.
slugster 2013 년

3
@slugster, 나는 그것에 대해 궁금해했다. HTML에서도 똑같은 일이 일어났습니다. 저는 dreamweaver로 UI를
Matthew Layton

답변:


175

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

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

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

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

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

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

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


14
@Rachel과 완전히 동의합니다. WPF에 비추어 볼 때 가장 중요한 인식은 UI가 데이터가 아니라는 것을 이해 하고 그에 따라 행동하는 것입니다.
Federico Berasategui

2
@Rachel - 바로 플레이 악마의 옹호에 (버튼, 텍스트 상자 등의 창에 표시되는) UI 시작은에서 응용 프로그램을 집중하는 데 도움이 무엇을 당신이 원하는. 나머지는 원하는 방법대한 구현 세부 정보입니다 .
Asaf 2013

3
@HighCore는 stackoverflow.com/questions/982978/mvvm-for-winforms를 살펴보고 Winforms는 비즈니스 개체가 사용자 컨트롤에 바인딩 될 수있는보기 / UI 구성 요소 일뿐임을 인정해야합니다. 좋아요 : WPF는 MVVM에 더 적합하지만 Winforms는 이러한 디자인 패턴에서도 작동 할 수 있습니다. Rachel이 "UI 개체로 응용 프로그램을 빌드 한 다음 필요한 데이터를 제공하는 WinForms의 반대입니다." 그래도 사실이 아닙니다. 나는 항상 최소한 데이터와 뷰의 방식으로 생각합니다. 데이터 및 Winforms / WPF / HTML 무엇이든.
Bernoulli IT

2
최소한 데이터 입력 / 수정 수준에서 데이터 바인딩을 지원합니다. 그리고 그 99.9999999 %의 개발자는 내가 의심하는 WPF에서도 엉망이 될 것입니다. 하지만이 토론을 마치겠습니다. WPF는 MVVM과 우려의 분리에 절대적으로 더 강력하고 적합하지만 여러분과 Rachel도 Winforms를 부정적인 구석으로 밀고 있다고 생각합니다. 특히 사용하는 단어를 계속 사용할 때 ...
Bernoulli IT

3
@YoupTube 맞습니다. Winforms는 데이터 바인딩을 지원하며 기본 바인딩 시스템도 작동하지 않는 경우에 대해 고유 한 사용자 지정 바인딩을 만들 수 있습니다. 나는 초보자를 염두에 두고이 답변과 블로그 기사를 작성했으며 일반적으로 초보자는 데이터 개체가 아닌 UI 구성 요소로 생각합니다. 또한 WinForms의 바인딩이 항상 현재 상태로 존재하는 것은 아니기 때문에 WinForms로 성장했거나 바인딩을 사용하지 않는 다른 기술에 익숙한 많은 개발자는 전환 할 때 이러한 주요 차이점을 식별하지 못하는 경우가 많습니다. 바인딩 된 아키텍처에. :)
Rachel

9

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

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

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

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

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

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

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


9

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

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

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

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

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

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


7

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

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


1
드래그 앤 드롭은 해를 끼치 지 않지만 타이핑을 선호한다면 괜찮습니다. 수동 입력은 WPF의 핵심이 아닙니다.
David

3
WPF에서 끌어서 놓을 때 종종 -1200의 여백이 많고 전혀 이해가되지 않는 것과 같은 것들이 있습니다 ... 저는 항상 손으로
해봤습니다.

1
이것은 주제를 벗어났습니다. 문제가 자신뿐만 아니라 모든 사람에게 흔한 것인지 확인하십시오. 게다가 문제가 있으면 드래그 앤 드롭이 나쁘다고 말할 수 없습니다. 디자이너에게 의존하는 것은 여전히 ​​필요하며 때로는 선호되는 경우도 있습니다. 디자이너와 개발자 모두 표현을 환영하는 방법을 알고 있다면 이것이 사실임을 알 수 있습니다.
David

1
당신이 표현 혼합을 사용하는 경우 예, 확인 당신이 그것을 할 수 있습니다,하지만 난 비주얼 스튜디오에서 말하고 ...
mlemay

12
Forms에서 온 사람에게 조언하고 디자이너를 사용하지 않도록 WPF를 시작하는 것은 정말 나쁜 생각이라고 생각합니다. XAML을 이해하는 가장 빠른 방법은 끌어서 놓기를 사용한 다음 코드를 관찰하는 것입니다.
Ucodia 2013 년

7

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

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.