2012-12-17 3 views
3

C#/XAML 관리 코드로 Windows 8 용 WinRT 응용 프로그램을 처음 작성하고 있으며 분명히 다른 크기의 UI를 처리해야합니다. 방향 (FullScreenLandscape, FullScreenPortrait, Filled and Snapped)이 발생할 수 있습니다.Visual State Manager를 코드 (WinRT, XAML)의 Current_SizeChanged 이벤트 처리에 대한 이점

대부분의 사람들은 XAML의 Visual State Manager를 통해 UI 변경 사항을 처리 할 것을 제안했지만 XAML 대신 코드 숨김을 작성하는 것이 더 편하다고 생각합니다. 간단히 말해서 다음과 같은 switch 문을 사용하여 Current_SizeChanged 이벤트를 처리 할 것이라고 생각했습니다. 각 주.

나는 두 가지 방법을 시도했으며 둘 다 나를 위해 효과가있는 것처럼 보였다. (VSM은 분명히 더 많은 일을했지만 - 적어도 나를 위해).

코드 대신 VSM을 사용해야하는 이유 또는 내가받는 혜택을 누군가가 알 수 있습니까?

+0

혼자 또는 팀에서 일하고 있습니까? XAML의 강점은 디자이너/UI-UX 전문가와의 공동 작업입니다. 그리고 나서 블렌드. – jv42

+1

모두 내 외로운 것. – Styff

+0

XAML에 퍼팅하는 것이 긍정적 인 측면을 줄여줍니다. 그러나 Blend를 사용하여 UI를 디자인하는 기능은 큰 장점입니다. – jv42

답변

2

WPF를 시작할 때 내 머리에 들어간 것은 물론 좋은 질문입니다. & WinRT 개발. 수년간 C# 프로젝트를 코딩 한 후 Xaml (일반적으로 C#보다 더 많은 줄이 있지만 더 많은 선언적)에 UI 논리를 작성하는 것이 이상한 개념으로 보였습니다.

사실 (제 말을 신경 쓰지 않는다면) Xaml에서 C#/VB.net을 통해 UI 코드를 작성하는 데 어떤 이점이 있습니까? '라는 질문을 추상화 할 수 있다고 생각합니다.

예를 들자면, 저는 여러 개발자와 몇 명의 그래픽 디자이너가있는 프로젝트 팀에 있습니다. 디자이너는 Xaml을 배치하고 응용 프로그램에 일관된 느낌을주는 데 매우 뛰어났습니다. (내가 잘할 수는 없지만) 웹 서비스 및 데이터 액세스를 작성할 때는 거의 생각할 필요가 없습니다. 레이어 - 이것은 우리의 개발자로서의 역할입니다. 그리고 그것이 어떻게해야할까요?

글자를 으로 작성하면 C# .net에서 View/UI 관련 로직이 많이 많이 작성되기 시작하면 모든 문제가 발생할 수 있습니다. 갑자기 디자이너가 Xaml에 집중할 수없고 OO 프로그래밍 속도를 따라야합니다. 우리 프로젝트에서 이것은 디자이너가 사실 꽤 유능한 개발자 (내가 작년에 이해할 수 있었던 모든 UI 코드 였음에 틀림 없다.)이기 때문에 걱정할 필요가 없다.) 그러나 내가 생각하기에 이것은 ' 직무 기술 수준에서 '관심사 분리'. 우리가 WPF와 관련된 패러다임을 취하면 Databinding의 '가이드'개발자들은 분리 된 테스트 가능한 UI 및 비즈니스 레이어를 만드는 길에 서 있다고 생각합니다. Xaml의 특성에 따라 UI를 작성하는 데 매우 선언적으로 접근 할 수있는 것과 같은 방식입니다. View Logic은 OO 프로그래밍의 특성을 너무 많이 가지지 않으면 서 매우 판독 가능한 방식으로 생성되고 관리됩니다.

그래서, 질문에 다시 돌아와서 - 아니요, 즉각적인 이점이 없다고 생각합니다. 주로 .Net 배경에서 나온 경우 이러한 것들을 많이 작성하면 Xaml이 다소 까다로울 수 있습니다. 그러나 팀원이라면 - 또는 개발에서 모범 사례가 매우 중요한 요소를 찾으면 Xaml에서 Visual State Manager 구성과 같은 View 관련 코드를 작성하는 것이 좋습니다.

마지막으로 한 가지 - '관련 논리보기'라는 용어를 많이 사용했음을 알 수 있습니다. 왜냐하면 WPF 또는 WinRT 프레임 워크의 성격으로 인해 일부 기능에 대해서는이 코드를 사용하여 코드 숨김으로 코드 과 관련된 UI 코드를 작성할 수 있다는 것이 널리 보였기 때문입니다. 그러나 UI 코드 파일에 비즈니스 로직을 작성하는 경우이 코드는 특별한 no-no로 간주됩니다. 이것은 '우려의 분리'를 깨고 테스트를 매우 어렵게 만들 수 있습니다. MVVM 패턴을 따르는 경우 (많은 WPF 또는 WinRT 프로젝트 에서처럼) ViewModel이 담당합니다.