2017-03-21 1 views
3

저는 광범위한 WinForms 경험을 가지고 있지만 WPF에 익숙하지 않습니다. XAML을 통해 양식 디자인 비전을 구현하는 방법은 쉽게 이해할 수 있지만 M-V-VM 프로그래밍 스타일에서 기대할 수있는 부분에 대해서는 아직 분명하지 않습니다. 나는 사물이 어떻게 행동 하는지를 구분하는 원칙을 이해하지만, 어떤 경우에는 그렇게 현명하게 수행하면 계속해서 나를 벗어날 수 있습니다.WPF 모범 사례 (Windows Forms)

예를 들어, 9 개의 버튼이있는 키패드가 있고 IsEnable 속성을 통해 모든 키패드를 활성화/비활성화하는 방법을 원할 경우 양식 디자이너는 코드 숨김 메소드 타겟팅에서이 모든 것을 처리하려고합니다. 디자인 이름으로. WPF와 같은 작업은 무엇입니까? 코드 숨김에서 일련의 bool을 관리하고 XAML의 각 단추를 각 단추 특성에 바인딩해야합니까? 어떤 지침을 주셔서 감사합니다. 이 시나리오를 설명하면, 올바른 방향으로 나를 가리키면 충분합니다.

+3

언급 대화 상자의 문제에 대한 좋은 기사를 가지고 토니 스니드에 의해 Simple MVVM Toolkit이다 : 그것은 중 하나입니다 MVVM이 정말 탁월한 기능 : 자신이 직접 만든 ViewModel의 IsEnabled 속성에 "Window1ViewModel"클래스와 부모 컨테이너를 만들고 싶습니다. 그러나 MVVM에는 (imho) 강력한 솔루션이 없다는 사소한 문제가 있습니다. 그 중 하나는 대화 상자입니다. WYSIWYG 편집기에서 HTML을 많이 사용하지 않는 것처럼 디자이너를 사용하지 않도록 설정하고 순수한 XAML로 작업하는 것이 좋습니다. 일단 사물을 파악하면 디자이너를 다시 활성화 할 수 있습니다. – cwap

+1

http://reedcopsey.com/series/windows-forms-to-mvvm/ – ASh

답변

4

바인딩. 단추 IsEnabled 속성을 ViewModel의 public 속성에 바인딩하고 해당 속성 값이 변경되면 ViewModel에 포함 된 논리에 따라 키패드 단추가 활성화되거나 비활성화됩니다.

마찬가지로 @GCamel은 INotifyPropertyChanged 인터페이스를 구현하는 버튼을 나타내는 POCO 클래스를 가질 수 있으므로 IsEnabled 속성이됩니다. 이 클래스의 인스턴스를 ObservableCollection에 추가하고 IsEnabled 속성이 변경되면 UI에서 해당 버튼이 활성화되거나 비활성화됩니다.

나는 또한 강하게 MVVM 프레임 워크 중 하나를 사용하여 추천 할 것입니다 내 개인 좋아하는 또한 하나의 경우 @cwap Climb Onboard on the MVVM Message Bus

+0

모든 링크에 감사드립니다! – schulmaster

1

이상적으로, IsEnabled 속성, 아이콘 및 텍스트로 button_info의 관찰 가능한 컬렉션을 가질 수 있습니다. itemsControl, 목록 또는 그리드에 연결하고 button_info를 datatemple에 연결하면 ... 무슨 뜻인지 알겠습니까? 더 GUI를, 아니 GUI, 그냥 뷰 모델 없으며

또는 특정 문제가 쉽게 바인딩 해결 같은 this sample ???