2014-09-04 4 views
0

마우스는 여러분도 알다시피 정적 클래스입니다. 여기에는 Mouse.Position이라는 정적 속성이 있습니다. 이 속성은 동적으로 업데이트됩니다 (마우스에 바인딩 됨, 아마도 ??). (msdn에서 마우스 설명서를 읽었습니다.)자체를 업데이트 한 정적 클래스를 만드는 방법은 무엇입니까? (마우스와 유사)

이 시나리오에서는 동일한 클래스를 만들어야합니다.

여러 페이지를 가질 수있는 응용 프로그램을 만들고 각 페이지를 공유합니다 (예 : Margin). Mouse.Position 유사

  1. 는 "페이지"클래스의 필드를 확인하고 생성자를 통해 값을 전달 (쉬운)
  2. 정적 클래스 :

    2 옵션을 (내가 생각하는) 그것을 할 수 거기 사용법은, 그러나,이 경우, 예를 들어, PageInformation.Margin 내가 디버그 (내 생각)에보다 쉽게 ​​이후 두 번째 옵션을 선호하고, 페이지를 만들

(PageInformation는 클래스가 아닌 속성이나 필드입니다) 클래스 클리너, 코드없는, 업데이트 중 더 쉬운 여백이 어떻게 든 사용자에 의해 변경된 경우 ...

누구나 어떻게 해야할지 알고 계십니까? (mvvm 방식 선호)

감사합니다.

업데이트 : P. 난 이미 기본 MVVM 연습 (INPC 등)

이 지금까지 내 응용 프로그램에서 일반적으로 코드를 이해 :

public class ViewModel : INotifyPropertyChanged 
{ 
    public event PropertyChangedEventHandler PropertyChanged; 

    protected virtual void NotifyPropertyChanged(string propertyName) 
    { 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 

    ... 
} 

public class SheetPage : ViewModel 
{ 
    ... 
} 
+1

아키텍처에 관한 질문입니까, 아니면'INotifyPropertyChanged' 구현 방법을 알고 싶습니까? - 첫 번째로 : 저는 페이지의 여백을 전역 변수로 갖는 것이 좋은 생각이며 디버깅이 더 쉬워야하는 이유는 무엇입니까? 전역 변수는 이해와 디버깅을 장기적으로 어렵게 만드는 경향이 있습니다. – Carsten

+0

나는 아키텍처에 대해 더 많이 생각합니다. Idk 전역 변수에 대한 tbh. 그것은'Mouse.Position'도 마찬가지입니다. –

+0

"알지 못합니다"? 그리고 심지어 마우스 예제에서라도 OOP를위한 좋은 디자인이라면 약간의 견해를 가지고 논쟁 할 수 있습니다.하지만 최소한 시스템에서 하나의 마우스 포인터 만 사용했기 때문에 터치가 너무 바뀌 었습니다. – Carsten

답변

2

귀하의 클래스는 싱글 및 단위 테스트에 불가능 그에 옆에있을 것입니다. 그것은 매우 실용적인 해결책으로 보이지 않습니다.

WPF에서는 모든 페이지의 모든 여백을 동일한 ViewModel 속성에 바인딩 할 수 있습니다. 이 방법을 사용하면 ViewModel 속성이 변경되어 (INotifyPropertychanged이 올바르게 구현되었다고 가정하거나 DependencyProperty을 사용함) 모든 마진이 변경됩니다.

+0

그래서,'MainWindowVM'의'Thickness' 구조체 a.k.A'Margin'을'SheetPageVM'에 넘겨서 수행하는 것이 더 낫습니다. –

+0

@MosesAprico XAML 바인딩의'MainWindowVM'에서 조상을 찾아서'Margin'에 직접 접근 할 수 있습니다 – WiiMaxx