2011-10-21 4 views
5

저는 좋은 디자인 감각이 있다고 생각하는 몇몇 동료들에게이 질문을했습니다. 흥미롭게도, 저는 다양한 반응을 받았습니다. 그렇다면 MVVM 패턴에 가장 적합한 옵션은 무엇이며 그 이유는 무엇입니까?ViewModel에서 경고를 어떻게 트리거해야합니까?

말 $ 10k 이상인 경우 경고 아이콘을 표시해야한다고합니다.

  • 옵션 1 : VM 속성 "양", XAML 트리거 및/또는 결합 세트 요소의 가시성을 가지고
  • 옵션 2 : VM은 XAML 시인성 변환기에 BOOL을 사용하여 시인성을 바인딩 속성 "ShowAlert"가
  • 옵션 3 : VM 재산 "AlertVisibility는"XAML 직접 결합했다
  • 옵션 4 : 기타 (설명해주십시오) 피드백에 대한

감사합니다!

+0

+1은 n ° 2이지만, 더 많은 UI와 관련된 'AmountHasReachedThreshold'와 같은 비즈니스 지향 레이블이 있습니다. –

+0

옵션 1과 옵션 2가 마음에 들었습니다.하지만 옵션 3이 너무 많은 것으로 나타났습니다. – Melursus

+0

내가 무엇을했는지 보아라. – Will

답변

4

귀하가 명확한 비즈니스 규칙 Shown WHEN > 10k을 가지고있는 경우,보기는보기가 HOW 데이터가 표시되는 시점을 알고 있기 때문에 ViewModel에 캡슐화되어야합니다. 당신이 노출 원하는 경우

그래서 나는 (... 축소 숨김)

모두 AmountShowAlert 속성을 노출 제안하고 Visibility 열거 상태와 같은 특정 일을보기 같은 WPF를 분산하기 때문에 AlertVisibility 속성을 노출되지 않도록 것 AlertVisibility 당신은 미래의 문제에 직면 할 수 있습니다. WPF의 최신 버전이 귀찮은 Visibility enum을 제거한 것을 상상해보십시오.이 경우 ViewModel을 수정하여 View Visibility 인프라/속성을 노출 시키면 View가 정상적으로 작동합니다. 뷰 동작이 ViewModel에 캡슐화 된 경우 MVVM 관점에서 올바르지 않습니다. 따라서 Keep it Simple 및 바로 bool AlertVisible 속성을 노출하십시오.

편집 :

이 절대적으로 동의 주석의 제안을 명명에 관해서! AmountVisibleIsAmountSpecified 또는 이와 비슷한 이름으로 바꾸는 것이 좋습니다.

+1

나는 ShowAlert 속성을 호출하지 않을 것이고, 나는 AmountOverThreshold와 같은 것이라고 부를 것이다. ShowAlert는 View 로직과 같은 냄새가납니다. – cadrell0

+0

+1 좋은 답변이지만, @ cadrell0에 동의합니다. 'ShowAlert'라고 부르는 것은 ViewModel에 뷰 특정 로직을 넣는 것과 너무 흡사합니다. ViewModel은 사용자가 잘못된 값을 보는 방법을 신경 쓰지 않기 때문에 'IsValid'라고 부르는 것을 선호합니다. 값이 유효하지 않음을 알고 있습니다. 유효하지 않은 값을 표시하는 방법을 알아내는 것은보기에 달려 있습니다.(숫자 필드의 텍스트와 같은 다른 이유로 인해 값이 유효하지 않을 수 있으며 이는 단순한 특수한 비즈니스 규칙이므로 IsThresholdExceeded 또는 다른 부울 값과 같은 것을 사용할 수도 있습니다. – Rachel

+1

I 이것이 비즈니스 규칙인지 여부에 달려 있다고 생각합니다. 비즈니스 규칙이 다른 곳에서 사용하거나 가치에 대한 반응이라고 생각하면됩니다. 그것은 단지 반응이라면, 나는 아래와 같이 할 것입니다. 그러나 다른 곳이 필요할 경우, SLL에서 제안한대로 CALL에 언급 된 바와 같이 VM에 속합니다. – SQLMason

0

금액의 10000 매개 변수를 사용하는 변환기를 통해 내보기의 경고 아이콘 가시성에 바인딩 된 금액이 표시됩니다. 변환기가 표시되거나 축소되었습니다.

임계 값을 초과하면 VM이 메시지를 보내고 메시지를 수신 대기하는보기 또는 다른보기 모델이 메시지에 반응 할 수 있습니다.

+0

그렇지 않으면 VM에 논리보기가 표시됩니다. – SQLMason

관련 문제