c# - 강좌 - wpf docs




Windows GUI:WPF 또는 WinRT(2015+) (6)

WinRT는 오랫동안 데스크탑에있었습니다. 저는 WinRT를 작성하고 있습니다. 그리고 Windows 10에서 이러한 응용 프로그램은 도킹되지 않은 위치를 지원합니다 (전통적으로 알고있는 창).

오늘부터 시작하는 사람에게는 WinForms 또는 WPF를 권장하지 않습니다. 그들은 주로 WinRT / XAML을 배워야합니다. 그리고 선택한 언어에 따라 필요에 따라 Win32 / .net을 배우십시오.

"WinRT + XAML은 Metro GUI 빌딩을위한 것입니다 (윈도우 8 타일 일입니다!)"-이것은 너무 지나쳐서 쓸모가 없습니다. WinRT는 Win32와 같은 런타임이며 GUI만을위한 것이 아니라 "그들이 말하는"완전한 BS입니다. XAML은 UI 계층 (WPF의 XAML과 매우 유사)이지만 Metro GUI가 잘못되었다고 말할 때 더 이상 Metro GUI와 같은 것은 없습니다. XAML은 Windows UI 계층입니다. 그리고 "Windows 8 타일 것!" 특정 사람들의 터널 비전을 표현합니다. 그것은 Win32가 시작 메뉴라고 말하는 것과 같습니다. 그 말이 얼마나 터무니 없는지 알 수 있습니다.

Windows World에서 GUI를 빌드 할 때 사용할 수있는 다양한 기술에 대한 개요를 얻으려고합니다.

맥락 상, 나는 작은 2D 플랫폼 멀티 플레이어 게임을 만들고 있습니다. (학습 목적으로 만 사용하십시오 ..)

선생님은 WPF가 올바른 방법이라고 생각하지만 Windows Forms와 비교하는 것 같습니다.

내 2015 년에 Windows Forms가 완전히 죽었다는 것이 내 생각입니다.

이 다른 스택 오버 질문에서 WinRT + XAML은 Metro GUI 빌딩 (Window 8 tile thing!)이며 WPF는 Window 7/8의 데스크톱에만 사용되며 Silverlight와 밀접한 관련이 있다고합니다.

Windows 8 런타임 (WinRT / Windows Store 앱 / Windows 10 Universal App)은 Silverlight 및 WPF와 어떻게 다릅니 까?

  • 데스크톱은 이전 앱이있는 곳입니다 (빨간색 WFP).
  • 새로운 클래스의 응용 프로그램 인 Metro 응용 프로그램은 VB.NET, C # 또는 C ++ 등 다양한 방법으로 구축 할 수 있습니다. 이 세 가지 언어 옵션은 XAML을 사용하여 UI를 빌드 할 수 있습니다. 대안은 UI 및 응용 프로그램 코드 모두를 개발하기 위해 JavaScript / HTML5 / CSS를 사용하는 것입니다.

내 진짜 질문은 : Window World에서 GUI를 구축하는 좋은 방법이 없습니까?

그렇지 않다면 Window 7, Window 8 (Desktop and Metro), Window Phone, (And Windows 10!) 및 심지어 x-box에서 어떤 기술을 사용해야합니까?

이 방법으로 비교할 다른 기술에 있습니까?

시간을 투자하는 것이 옳다고 생각하십니까?


꽤 오래된 스레드이지만 Google (관심없는)을 통해이 문제에 부딪힌 것처럼 다른 누군가도 여기에 도달 할 수 있습니다. 이것은 새로운 프로그래머들이 계속해서 묻는 질문입니다. Windows 10이 공식적으로 출시되었으므로 몇 가지 사항에 대해서도 답변하고 싶습니다.

첫째, 더 이상 Windows Forms로 시작해서는 안됩니다. 현재로서는 가장 성숙한 기술이지만 Windows Forms는 더 이상 개발되지 않으며 현재는 유지 관리 단계에 있습니다. WPF는 적극적으로 개발되었습니다 (마지막으로 읽었습니다). 그러나 이제는 Windows Universal Apps (WinRT 1)를 더 이상 전체 화면으로 사용할 필요가 없으며 다른 데스크톱 앱 (WPF & WinForms)과 마찬가지로 창 모드에서 사용할 수 있습니다. 이것은 태블릿이 아닌 컴퓨터에서 유용성을 크게 향상시킵니다. 나는 이것이 데스크톱 앱의 미래가 될 것이라고 믿습니다. 그러나 WPF 소프트웨어는 기존 데스크톱 앱 (권한 사항이없고 UAC 만 있음)입니다. 어느 쪽이든 WPF 또는 WinRT (.Net 사용) 개발을 배우더라도 두 가지를 모두 배우게됩니다. 둘 다 XAML + C # (또는 다른 .Net 언어)입니다. WinRT가 Windows 8과 함께 나왔을 때 WPF를 배우는 중이었습니다. 집에서 바로 느낄 수있었습니다. WinRT의 MVVM 시나리오 (데이터 바인딩)에 대해서는 확실하지 않습니다. 나는 여전히 WPF의 측면을 스스로 배우고 있습니다.

창 10이 시작되었습니다. Windows 8 / 8.1은 Windows 7만큼 성공을 거두지 못했습니다. 따라서 더 많은 사용자를 가진 앱을 구축하려면 지금 WPF를 사용해야합니다. 그러나 가까운 장래에 WinRT가 갈 길입니다.

" 창문 7 , 창 8 (Desktop and Metro), 창 전화 및 Windows 10! 및 x-box에서 어떤 기술을 사용해야하는지에 대한 질문은 Windows Universal Apps입니다." 이것이이 프레임 워크가 개발 된 정확한 이유입니다. 모든 기기의 앱을 개발하는 데 사용되는 하나의 기술입니다. 데스크톱, 태블릿, 전화 (Visual Studio 2015와 함께 번들로 제공되는 Xamarin을 사용하는 Android 포함), Xbox 및 IoT (Internet of Things).


나는 당신의 질문 중 하나에 만 대답하려고 노력할 것입니다 :

Windows Forms가 완전히 죽었습니까?

아니요, Windows Forms 기술은 죽지 않았습니다. 이유를 말씀 드리겠습니다. WPF 및 XAML은 매우 포괄적이고 복잡한 기술이며 매우 멋진 UI를 구축 할 수 있습니다. 그러나! 이 기술에는 깊은 지식이 필요합니다. 기본 레이아웃의 경우 많은 지식이 필요하지 않지만 일부 고급 레이아웃의 경우 깊은 지식이 있어야 하며이 기술로 시작하여 Google에서 몇 가지 팁을 검색하는 데 많은 시간을 보냈습니다. 따라서 사용자 입력을 위해 간단한 양식이 필요한 경우 항상 매우 간단하고 간단한 Windows Forms 기술을 선택합니다. 이것이 또한이 기술이 세상에 올 때 매우 성공적인 이유이기도합니다. WPF로 시작할 때 MVVM 디자인 패턴이 무엇인지 알아야하며 경험이없는 프로그래머도 그와 혼동됩니다.


내 두 센트 ... Windows를 포함한 모든 데스크탑 운영 체제에서 실행할 수있는 프로그램을 의미하는 진정한 범용 응용 프로그램을 원한다면 WinForms는 여전히 갈 길입니다. CLR 호환성을 유지하고 Mono를 통해 Mac 및 Linux에 배포 할 수 있습니다. 큰 혜택. XAML은 멋지지만 다른 운영 체제로 이식되지는 않습니다.

나는 개인적으로 샌드 박스형 (quicksanded?) UWP 비즈니스 모델이 무섭다는 것을 발견했다. 그것은 처음부터 Windows가 서 있었던 개방성을 반박합니다.


이것은 오래된 스레드이지만 현재 .NET 프레임 워크의 진행 상황, c # 기능 및 게임 개발 선택으로 c #에 대한 관심이 높아진 중요한 스레드입니다.

WPF는 거의 정직하게 AC # 게임 플랫폼으로 선택되지 않습니다. WPF 공역 문제는 사람들을 매우 빠르게 무서워했습니다. 나는 이것으로 인해 많은 주요 타이틀 또는 메인 스트림 게임 엔진이 WPF를 대상 플랫폼으로 지원한다고 생각하지 않습니다. WPF는 게임 런처를위한 훌륭한 플랫폼을 만듭니다!

WinForms는 현재 유지 관리 모드에 있지만 앞으로 몇 년 동안 유효한 선택이 될 것입니다. 시간이 오래 걸리고 안정적입니다. 내가 본 것에서, 2017 년에도 WinForms는 여전히 C # 기반 게임 개발을 위해 선택된 가장 일반적인 플랫폼입니다.

Steam Hardware Survey 데이터 를 살펴보면이 답변을 작성할 당시 (2017 년 7 월) Windows 10 64 비트가 현재 50 %의 시장 점유율에서 PC 게임 플랫폼을 차지하고 32 %에서 Windows 7 64 비트가 그 뒤를이었습니다. 거의 7 %의 Windows 8.1 64 비트. 다른 모든 OS 플랫폼 시장 점유율은 너무 작아서이 세 가지 이외의 다른 것을 고려할 가치는 거의 없습니다.

PC 게임의 현재 상태 인 WinForms는 3 가지 상위 PC 플랫폼을 모두 대상으로하는 가장 일반적인 분모입니다. UWP는 새로운 플랫폼이 등장하지 않는 한 Windows 7 및 8이 Windows 10에 대한 시장 점유율을 크게 잃기 때문에 향후 C # 게임 개발을위한 최고의 대상 플랫폼이 될 것입니다. 그것은 숫자에 의한 것입니다.

최대 시장 점유율을 지원하는 대신 OS 플랫폼 당 최고 수준의 호환성을 기반으로 선택하면 다음과 같은 선택이 가능합니다.

  • Windows 10 : UWP
  • Windows 8.1 : WinRT 또는 Windows 스토어
  • Windows 7 : WinForms

대부분의 다른 답변은 표준 Windows 응용 프로그램 개발을 중심으로하지만 게임 개발은 매우 다른 영역이며 대상 OS 및 선택한 그래픽 API 또는 게임 엔진의 선택과 같은 다양한 요소가 선택에 영향을줍니다.


저는 10 년 동안 Microsoft 기술을 사용해 왔습니다. 내가 배운 가장 중요한 것은 Microsoft가 제공하는 내용에 귀를 기울이지 않는 것입니다. Microsoft가 미래라고 말하면 50 %의 확률로 잘못 될 수 있습니다. Microsoft는 투자 한 제품을 홍보하기 위해 최선을 다할 것이지만 반드시 따라야하는 것은 아닙니다. WCF 및 Silverlight에 어떤 일이 발생하는지 확인하십시오.

WPF는 학습하기에 매우 좋은 플랫폼이지만 학습 곡선이 큽니다. 프로그래밍 경험이 5 년 미만인 개발자는 WPF를 제대로 수행 할 수 있다고 생각하지 않습니다.

MVVM 패턴을 따르면 WinForm에서 비교적 쉬운 작업을 수행하는 것이 WPF에서 매우 어려울 수 있습니다. 업데이트 후 특정 조건에 따라 셀에 색상을 지정하거나보기에서 행을 스크롤하여 흐리게 표시합니다.

물론 MVVM을 수행 할 필요가 없다고 말할 수 있습니다. 코드를 코드 뒤에 넣고 작동 시키십시오. 그렇습니다.하지만 WPF를 사용하는 요점은 무엇입니까? 왜 Win Form을 사용하지 않습니까?





window