2009-03-12 7 views
20

새로운 응용 프로그램의 경우 Windows Forms에서 WPF를 사용하는 것이 더 낫습니까? WPF를 사용하기 전에 Windows Forms를 사용했습니다. 내가 아는 한 WPF는 Windows Forms의 후속 제품입니다.Windows Forms에서 WPF를 사용하는 것이 더 좋습니까?

응용 프로그램이 많은 사용자 지정 컨트롤이있는 DirectX Windows (WPF 3D가 아니라 Managed DirectXSlimDX)를 호스팅합니다.

편집 : 응용 프로그램이 3D 관련 응용 프로그램, 편집기 등 modo 등 :

Image created using the 3D painting program modo.

+0

정말 달려 있습니다 .... 응용 프로그램에 대해 더 많은 배경 지식을 제공 할 수 있습니까? – Brann

+0

Dup? http://stackoverflow.com/questions/388711/when-is-winforms-the-correct-choice-vs-wpf –

+6

DUP가 아닙니다. 3D/DirectX로 구부러져 있습니다. –

답변

11

---- 편집 2 -----

당신이 노력하고 있음을 감안할 때 내가 보여준 것과 같은 편집기를 만들려면 WPF를 더 권장 할 것입니다. 현재 프로젝트에는 이러한 여러 가지 기능이 포함되어 있으며 Direct3D 콘텐츠와 WPF를 결합하는 기능이 매우 강력하다고 판단했습니다. 직사각형 창뿐만 아니라 씬을 무엇이든 렌더링 할 수 있다면 좋을 것입니다. WinForms에서는 거의 직사각형 하나에 국한되어 있었고 거기에는 영공에 문제가있었습니다 (미묘하지만 메뉴가 hwnd를 넘길 때 깜박 거리는 문제 등). D3DImage가 포함 된 WPF 컴포지션은 이러한 모든 문제를 없애고 상상력을 사용하여 매우 유연한 UI를 구성 할 수있게합니다. WPF3D 객체 측면에서 실시간으로 장면을 렌더링하는 것과 D3D에서 GUI를 수행하는 대신 WPF 컨트롤을 직접 사용하는 것 등이 있습니다.

----- 원본 ---------

DX를 호스팅하려면 UI를 사용하여 장면 구성을 수행 할 수있는 기능을 제공하고 공역 문제가 없으므로 DX를 고려해야합니다. D3DImage을 사용하십시오.

SlimDX 및 WPF에서 작동합니다.

---- 윈폼으로 Direct3D를 사용의 단점, 그리고 WPF/DX 통합의 이점에 대한 자세한 내용은 편집 -----

은 다음을 참조하십시오

MSDN Article on Airspace

Codeproject arcticle on intro to D3DImage

+2

감사합니다. 영공이란 무엇입니까? –

4

많은 컨트롤을 작성하고 있다면 WPF를 선택하십시오. WPF 디자인의 일부는 확장 가능하고 구성 가능하며 결과적으로 사용자 정의 컨트롤을 작성하기가 쉽습니다.

WinForms에서 작성한 사용자 지정 컨트롤을 약간 작성 했으므로 매우 어려울 수 있습니다. 레이아웃은 실제로 당신에게서 약간의 시간이 걸릴 것입니다. 내 인생의 여러 주말은 WinForm 컨트롤 레이아웃에 지급되었습니다. WPF에서 이에 상응하는 컨트롤을 작성하는 것은 쉬웠습니다.

1

AFAIK WPF는 WinForms의 후속 제품입니까?

나는 MS가 이것을 강요하고 싶어하는만큼 사실이라고 생각하지 않는다. Winforms에 작성된 너무 많은 레거시 코드가 있기 때문에 가까운 장래 또는 다소 먼 미래에 현실적인 것이 될 수 있습니다.

그래서 마음에두고, WPF 학습에 시간을 할애 할 수 있다면 그렇게 할 것입니다. 그렇지 않으면 Winforms를 사용합니다.

+0

글쎄, 비스타는 XP의 후계자 였지만, 모든 비스타 플랫폼을 쓸모 없게 만들 의도는 아니었다. WPF는 MS가 동일한 틈새 시장을 수행하면서 WinForms의 기본 사항을 개편하기위한 것이 었습니다. – DevinB

+0

놀랄 것 같은데, 내 생각에! –

17

약 9 개월 전에이 질문을 처리했습니다. 우리는 WPF로 가기로 결정했고 지금까지 우리는 그 결정에 만족합니다. 예, 학습 곡선이 있습니다. 특히 상당 부분 WinForms에서 상당한 성과를 거두었습니다. 또한 디자이너에게 액세스 권한을 부여하는 것이 좋습니다. 그렇지 않으면 응용 프로그램이 약간 초라 해 보일 수 있습니다. 또한 왜 WPF가 어려울 지에 대해 머리를 긁적 거리며 시간을 보내야하는 WPF에 대해 준비하십시오.

그러나 WPF는 한 걸음 앞서고 있습니다. 데이터 바인딩, 템플리트 및 창을 어떻게 보이게 할 것인가에 대한 완벽한 제어를 통해 WinForms가 원래 어떻게되어야했는지 생각할 수 있습니다.

오 예, 일부 누락 된 컨트롤에 대해 몇 달러를 준비해야합니다. 날짜 선택 도구와 나무 컨트롤에 대한 체크 박스가없는 몇 가지 요소가 있습니다. 실제로이 템플릿을 템플릿으로 만들 수 있지만 그 점에서 winforms만큼 간단하지는 않습니다. 3.5 SP1에는 감사하게 그리드 컨트롤이 포함되어 있습니다.

나는 더 많은 것을 놓치고있다라고 확신한다. 그러나 그것은 내가 나의 머리의 꼭대기로부터 떨어져서 올 수있는 것이다.

행운을 빈다.

+0

DatePicker 및 DataGrid는 WPF Toolkit에 포함되어 있으며 .NET 3이 필요합니다.5SP1. http://wpf.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=22567 – Andy

+0

업데이트 : WPF에 새로운 컨트롤이 많이 있습니다. http://weblogs.asp.net/scottgu/archive/2009/10/26/을 참조하십시오. wpf-4-vs-2010-and-net-4-0-series.aspx – gideon

3

우리도이 문제를 해결했습니다 ... 우리는 WinForms를 통해 WPF 로의 이동을 시작했습니다. 요즘은 WinForms를 뒤에 놓는 것이 매우 쉬운 결정이라고 생각합니다. 금형 제작은 점점 더 좋아지고 있으며, 진정한 디자이너를 팀원으로 삼을 수 있다면 함께 할 수없는 일은 거의 없습니다.

우리는 미래가 실제로 WPF가 아니라는 것을 깨닫기 시작했지만 실버 라이트입니다. 실버 라이트가 성숙 해짐에 따라 WPF와 점점 더 가까워지고 있으며 크로스 플랫폼을 실행할 수 있습니다. 실버 라이트의 길은 어도비 에어와 비슷하며 언젠가는 브라우저 외부에서 살게됩니다 (실제로 지금 할 수는 있지만 고통입니다). 나는 정말로 .NET UI의 미래가 Silverlight가 될 것이라고 생각한다.

2

이 경우, 공급 업체 (즉, Microsoft)의 리드를 따릅니다. WPF는 자체 내부 제작 기능을 제공합니다. 그것의 범위 (Silverlight를 생각하십시오)와 깊이가 WinForms보다 분명히 큽니다. 또한 모범 사례에 대한 참조와 함께 사용합니다. 모든 증거 (여기와 다른 곳)에서 프라임 타임 (Prime Time) 개발에 대한 준비가 된 것 같습니다.

당신은 WinForms에 대한 친화력이 없다는 것을 압제했습니다 (친숙 함을 기반으로합니다). 결국 전환해야합니다. 새로운 프로젝트는 프로세스를 시작하기에 좋은 곳이 될 것이고 그 밖의 모든 것들은 평등합니다.

2

최근 WPF에서 마이닝 데이터 용 3D 뷰어와 비슷한 제품 (WPF/SlimDX 권장)을 최근에 만들었습니다.

이 도구는 약간은 (특히 Visual Studio) 다소 느리지 만 WPF를 사용하면 대부분의 기능이있는 기본 컨트롤 회색이 아닌 약간의 Zing으로 응용 프로그램을 만드는 것이 훨씬 쉬워집니다.

3.5SP1의 D3DImage를 사용하면 SlimDX 장치를 컨트롤 안에 쉽게 호스트 할 수 있습니다.

전반적으로 WPF는 사용하기가 더 좋지 않다고 말할 수 있습니다. 어떤 것은 더 좋고, 어떤 것은 더 나쁩니다. 그러나 그것은 확실히 미래입니다.

6

Expression Blend와 WPF에 대한 핸들을 얻은 후에는 Windows Forms보다 UI를 만드는 것이 더 생산적이라는 것을 알았습니다. 내 마음에 그것은 새로운 기술/도구가있는 가장 큰 요소 중 하나입니다. 새 도구로 이전 도구와 동일한 결과를 더 빠르게 얻을 수 없다면 시간의 10 % 만 사용하는 모든 종소리와 호각이이를 보상하지 않습니다.그렇다

에서 다른 장점은 WPF가 양식 이상이 있다는 것을 :

  • XAML의 인터페이스가 너무 미세 조정에보다 쉽게 ​​모든 모호한 속성이나 잘라 하나의 전체 섹션을 붙여 만드는 데를

  • WPF를 사용하면 인터페이스를 모듈화하는 것이 훨씬 쉬워 져 제어를 통해 화면을 제어 할 수 있습니다. 양식은 어느 정도까지는 동일하게 수행 할 수 있지만 항상 전투임을 알았습니다.

  • 일부 종소리는 시원합니다. 나는 어떤 제품이 선택되었는지에 따라 다른 입력 상자가 필요한 데이터 입력 화면에 애니메이션 (스토리 보드)을 사용하는 것이 정말 유용하다는 것을 알았습니다. 양식을 사용하면 WPF를 사용하여 각 데이터 입력 화면에 대해 별도의 패널/양식을 만들어야합니다. 다양한 텍스트 상자를 숨기거나 이동시키기 위해 애니메이션을 사용합니다.

1

귀하의 경우 WPF가 적합합니다. Windows Forms (비즈니스 응용 프로그램의 빠른 개발과 같은)에서 실제로 할 수있는 많은 작업이 있기 때문에 응용 프로그램 선택에 의한 응용 프로그램입니다. WPF를 사용하여 미디어 센터 애플리케이션 (내 50 인치 플라즈마 스크린의 미디어 콘솔 용 개인 프로젝트) 용 GUI를 작성했습니다.

그러나 데이터 입력 및 표시 응용 프로그램을 작성하는 경우 일반적으로 Windows Forms를 사용하여 개발 속도를 높입니다. XAML 편집기는 Visual Studio 2010에서 더 뛰어 났지만 여전히 갈 방법이 있습니다. 참조가 없으면 많은 속성 속성에 IntelliSense 도움말이 없기 때문에 내용이 무엇인지 알기가 불가능합니다 (책이나 웹 예제를 통해 내 값을 찾으려고 많은 시간을 보냅니다) . 즉, WPF 작성을하면 매우 매력적인 사용자 인터페이스를 만들 수 있습니다.

16

나는 이것이 오래된 게시물이지만, 여전히 유효한 질문이라고 생각합니다.

저는 근무한 첫 번째 회사에서 3 년간 WinForms를 사용했습니다. 거기에 정말 좋은 프로그래머가 있었고, 아주 멋진 일을하는 아주 영리한 방법을 발견했습니다. WinForms는 시간의 시험을 견디어 냈습니다. 견고하고 신뢰할 수 있으며 효율적인 플랫폼입니다. 크고 작은 많은 사람들과 많은 사람들이 WinForms를 수년간 사용해오고 있으며이 기술은 여러 번 그 자체로 다시 입증되었습니다. 그런 관성은 당신이 마이크로 소프트 일지라도 싸우기가 어렵습니다.

여전히 WPF는 확실히 미래입니다. Microsoft는 Visual Studio 2010 및 Expression Blend와 같은 제품을 제작함으로써이 점을 분명히했습니다. (내부 프로젝트에 WPF를 사용할 때 Microsoft는 폰트 렌더링 및 속도 문제와 같은 많은 문제를 수정하여 사람들이 처음에 채택하지 못하게했습니다 .Visual Studio 2010은 WPF가 오랫동안 프로덕션 준비가 완료되었음을 보여줍니다.

WinForms 또는 WPF로 프로그램을 작성하는 것이 더 나은가요? 대답은 WPF입니다. 두 가지 이유가 있습니다. 첫째, Microsoft는이를 내부적으로 지원하기 때문에 매우 약할 것입니다. 오랜 시간입니다. 마이크로 소프트는 WinForms보다 우위에 서게되었습니다. (필자가 동의하지 않은 사람들도 있지만, 그럼에도 불구하고 진실이며 더욱 분명 해지고 있습니다. WPF는 통합 지원 놀라운 데이터 바인딩, 타임 라인 기반의 애니메이션 등과 같이 WinForms가 제공하지 않는 (아마) 결코 제공 할 수없는 많은 기능을 가지고 있습니다. 당신의 애플 리케이션을위한 놀라운 테마를 만들기 쉽고, 디자이너가 전환을 요청하게됩니다.덧글에 설명 할 수있는 것보다 WPF가 훨씬 더 많습니다. 그러나 이것들은 저에게 큰 두 가지입니다.

이것은 말했듯이 WinForms에서 할 수없는 WPF에서는 할 수있는 일이 없습니다. 당신이 충분히 나쁘게 원한다면 어떤 언어로도 무엇이든 할 수 있습니다. 요점은 WinForm을 사용하면 다른 사람들이 어떻게 멋진 일을했는지에 대해 Google을 수색 할 때 WPF는 Microsoft가 Windows의 미래라고 생각하는 모든 기능을 기본적으로 지원하고 사용자의 손끝에 바로 놓을 수 있다는 것입니다.

사람들은 시간이 지남에 따라 Windows에 직접 빌드되는 새로운 기능에 익숙해지고 사용하는 모든 응용 프로그램에서 사용할 수있게 될 것입니다. 이것은 그 (것)들을 지원하지 않는 아무거나가 clunky,보다 적게 쓸모 느끼고, 돈 지출에보다 적게 가치가있게 보이는 점에 도달 할 것이다. (터치 통합이 가장 눈에 띄는 예로 볼 수 있습니다. 모니터에 고정하고 마우스를 모방하는 터치 스크린 솔루션이 있지만 모든 컴퓨터에서 터치 스크린 기술은 매우 먼 길을 걸어 왔으며 Windows 8에서는 선을 흐리게 처리했습니다 데스크탑과 모바일 장치 사이에서 사람들은 응용 프로그램이 WinForms를 사용하는 경우 구현하기가 매우 어려운 방식으로 응용 프로그램을 사용하려고 할 것입니다.)

조만간 또는 이후에 WinForms에 대한 지원 및 개발이 중단 될 것이며, 뒤에 남겨진 모든 사람들은 강제로 항구에, 그리고 빨리. 그러나 WinForms를 사용하여 Microsoft에서 가까운 미래에이 프로그램을 삭제할 수있는 프로그램이 너무 많습니다. 누가 무슨 일이 일어날 지 압니까. 아마도 WinForms는 Itanium 프로세서가 Intel에 어떤 것이 있는지 Microsoft에 알릴 것입니다. Itanium 프로세서는 더 나은 솔루션을 사용할 수있을지라도 계속 사용하기에 충분한 사용자를 보유한 제품입니다. (http://arstechnica.com/business/news/2011/06/ask-ars-why-itaniumask-ars-with-xeons-improvement-why-bother-with-itanium.ars)

내 조언은 다음과 같습니다. 새로운 개발과 관련하여 WPF로 전환하십시오. 교육 과정에 직원을 파견하거나 잠시 동안 게임을 보게하여 기술에 대한 느낌을 높일 수 있습니다. 학습 곡선은 가파르지만 이렇게하면 WPF 학습을 통해 WPF에 익숙한 사람들이 WPF와 비슷한 정도로 SilverLight를 학습 할 수 있기 때문에 팀의 기술을 향상시킬 수 있습니다. 빠르게 배우기는하지만 데스크톱이 아닌 웹을 위해 설계되었습니다. WPF로 다시 작성된 앱은 나중에 웹 응용 프로그램으로 변환하기가 훨씬 쉬워지기 때문에이 기능이 유용합니다. WPF는 새로 도입되었지만 사람들이 배울 수있는 다른 것을 만들기위한 목적으로 만들어진 것이 아닙니다. 이 제품은 응용 프로그램을보다 사용자 친화적이고 직관적이며 휴대 가능하도록 설계되었습니다. 개발자가 응용 프로그램을 새로운 시대의 컴퓨터에 적합하게 만들 수 있도록 설계되었습니다.

WinForms로 작성된 응용 프로그램 : WinForms는 지원 기간이 길기 때문에 오랫동안 계속 지원된다고 생각하는 것이 안전하다고 생각합니다. 팀에서 WPF에 익숙해 지도록 권장하고 응용 프로그램을 서서히 WPF로 이전하십시오. 마이크로 소프트가 허락하는 한시적 인 시간을 가지지 만 항상 어떤 식 으로든 WinForms의 날은 끝났음을 명심하십시오. 아무도 무슨 일이 일어날 지 확신 할 수는 없지만 레거시 제품에 대한 지원은 중단 될 것입니다 그것이 정당화 될 수있는 한 빨리 WinForms 응용 프로그램이 수년 동안 유지 되더라도 시간이 변함을 기억하는 것이 중요합니다. 우리는 모두 변경해야합니다.

+0

+1 좋은 게시글 ... – Trap

관련 문제