2013-09-06 2 views
1

나는 표시 영역과 같은 속성을 모델에 배치해야하는지 (subcontrols를 쉽게 바인딩 할 수 있도록 datacontext로 상속 됨) 모델에 배치해야하는지 또는 속성을 그래프 뷰어에 배치해야하는지 여부에 대해 조금 혼란스러워합니다. 그런 다음 액세스해야하는 구성 요소에 조상에 바인드하는 고유 한 특성이 있도록하십시오. 조상 컨트롤에 바인딩하거나 모델을 바인딩하는 것이 더 깔끔한가요? 후자가 더 깨끗해 졌다고 느껴지지만 표시 범위는보기의 속성입니다.속성을보기 또는 모델에 배치해야하는지 여부를 결정하는 방법은 무엇입니까?

예를 들면. scrollviewer에 필요한 AxisdivisionUnit 속성과 그래프 업데이트에서 위치를 다시 계산하는 데 사용되는 엄지 손가락 몇 개가 있습니다. 스크롤 뷰어는 최상위 레벨 컨트롤 (그래프 뷰어)의 트리 뷰가 채워질 때만 나타납니다. 그래서 그래프 뷰어에 속성 axisdivisionunit을 놓고 속성을 scrollviewer와 thumb의 속성에 바인딩 할 수있었습니다. 내가 완전히 UI를 분리 해 더 잘한다면 아니면 내가 엄지 손가락과 ScrollViewer에 바인딩 속성에 모델 (뷰 모델을 가질 수 있습니다.

+0

UI에 대해 이야기하지 않고 속성을 설명 할 수없는 경우보기에 속하는 것이 적절하다는 표시입니다. 속성이 모델이 무엇인지 설명하지 않으면 해당 모델이 속한 것이 아닙니다. – Shoe

+0

아, 나는 당신의 새로운 질문을 본다, 나는이 질문을 다시 편집하고 편집을 삭제할 것을 제안 할 것이다 : 그리고 나는 다른 사람들이 그것에 대답 할 수 있도록 새로운 질문을 시작한다. C# WPF로 태그하고 ' MVVM – Alan

답변

3

내가 도울 수 있다면 어디 보자 ..

첫째을, 당신이 있기 때문에 당신의 UI에서 어떤 것이 생겼는지에 대한 프리젠 테이션에 대해 논의한 후에는, 그 속성이 당신의 모델에 있어야한다고 생각하지 않습니다. 실제 질문은 View 또는 ViewModel에 속하는지 여부와 같습니다.

AxisDivisionUnit 그것은 그래프의 모양의 일부일뿐입니다.보기에있는 것이 더 합리적이라고 생각합니다. 비즈니스에 연결된 그래프의 한계를 설명하는 속성이 있다면 ogic 인 경우 ViewModel에서 코드를 테스트하고 UI를 대체하려는 경우 정확한 똑같은 제한을 적용하기를 원하기 때문에 ViewModel에서 더 좋을 수도 있습니다.

"이 그래프를 완전히 다른 그래프와 UI로 대체하면 동일한 데이터를 표시 할 수 있습니까? 동일한 논리를 적용해야합니까?" 대답이 '아니요'인 경우이 경우에 표시하는 방법입니다. 그러면보기에 속하며 다른 컨트롤의 속성에 컨트롤의 속성을 바인딩하거나 트리거, 비헤이비어 등을 사용하여이를 구현할 수 있습니다 보기에서.

+0

괜찮습니다. 감사합니다. 실제 문제는 모든 바인딩 문이 elementname이나 상대 소스를 기반으로하지 않기 때문에 실제 구성 요소를 참조하는 것이 아니라 datacontext를 상속받을 수 있으면 코드가 더 깨끗해 보일 것이라고 생각합니다. 또한 뷰/뷰 모델은 그렇지 않지만 최상위 뷰 클래스에는 이미 많은 속성이 있습니다. 그러나 결국 속성은 모델보다보기와 더 관련이 있습니다. –

+0

다른 작은 질문을 볼 수 있습니까? –

관련 문제