2010-05-21 6 views
1

MVVM 접근 방식에서 Properties.Settings에 바인딩하는 방법은 무엇입니까? ViewModel에서 C# 코드의 속성을 다른 속성 (Properties.Settings.Default)에 바인딩하거나 표준 속성에 바인딩하고 저장시 각 속성이 Properties.Settings에 수동으로 전달되도록해야합니까?MVVM Properties.Settings에 바인딩

답변

4

후자와 같은 것 :보기에 적절하게 ViewModel의 속성을 통해 Properties.Settings.Default의 설정을 노출합니다.

public class SomeViewModel 
{ 
    public int SomeProperty 
    { 
     get 
     { 
      return Properties.Settings.Default.SomeProperty; 
     } 
     set 
     { 
      Properties.Settings.Default.SomeProperty = value; 
     } 
    } 
} 

... 또는 그 취지의 코드.

+0

바로 이것이 내가 피하려고하는 상용구 코드의 일종입니다. 새로운 것을 추가하지 않고 있습니다. 이 작업을 올바르게 수행하려면 속성에서 값을 변경할 때 INPC를 실행해야합니다. 또한 모델의 속성 변경 (이 경우에는 설정)을 청취하고 기본 모델이 변경되면 INPC를 실행해야합니다. 이 모든 것들이 Settings.Property 또는 ViewModel.Settings.Property 대신 ViewModel.Property에 바인딩됩니까? –

2

설정은 INPC를 구현하므로보기의 설정에 간단히 바인딩 할 수 있습니다. 실제로 저장소를 격리하기 위해 설정에서 Save()를 수동으로 호출해야한다는 것을 기억하십시오.

+0

설정과 직접 바인딩하는 것은 좋지 않습니다. MVVM과 같은 것이 아니기 때문입니다. 뷰가 아무것도하지 않았지만 설정의 내용을 표시/편집 할 수 있지만 그 경우에도 Properties.Settings.Default 적절한 ViewModel을 고려하지 않으려는 경우는 예외 일 수 있습니다. – allonym

+1

MVVM은 일부 측면에서 매우 주관적입니다. 설정 (기본적으로 모델의 일부)에 필요한 속성이있는 경우 직접 바인딩하는 데 문제가 없습니다. 또한 올바른 유형의 일부 속성에 대해 내 모델에 직접 바인딩합니다. 단순히 모든 모델 속성을 다시 구현하는 상용구 VM 코드에는 사용하지 않습니다. –

+0

보기가 실제로 정확한 설정을 얻고 있는지 테스트하는 방법은 무엇입니까? 당신은 viewmodel을 지름길로 가져 갔기 때문에 당신은 할 수 없습니다 ... –

관련 문제