2014-09-04 58 views
0

鼠標,如你所知,是一個靜態類。它有一個名爲Mouse.Position的靜態屬性。該屬性動態更新(綁定到鼠標,也許??)。 (我已閱讀msdn中的鼠標文檔)如何讓更新自己的靜態類? (類似於鼠標)

我需要使用此方案構建相同的類。

我正在製作一個應用程序,它能夠擁有多個頁面,並且每個頁面都是共享的,例如Margin的值。

是有2個選項(我認爲)做到這一點:

  1. 請在「頁面」類中的字段,並通過構造函數傳遞值(最簡單的)
  2. 靜態類,類似Mouse.Position使用,但是,在這種情況下,例如,PageInformation.MarginPageInformation是一類,而不是財產,也不是場)

我傾向於第二種選擇,因爲它更容易調試(我猜),並進行頁面一流的清潔程序,無代碼,並在更新過程中更輕鬆如果邊緣以某種方式改變了用戶..

任何人都知道該怎麼做? (mvvm首選)

謝謝。

更新: P.S.我已經瞭解基本的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 2014-09-04 05:34:46

+0

我認爲它更多的是關於架構。 Idk關於全局變量tbh。 「Mouse.Position」也是如此嗎? – 2014-09-04 05:36:49

+0

你不知道?即使在鼠標的例子中,如果這是一個很好的面向對象設計的話,你可能會爭辯(有點基於觀點) - 但至少你曾經在系統中只有一個鼠標指針 - 觸摸改變了這一點。 – Carsten 2014-09-04 05:39:17

回答

2

你的類將是一個獨立的,併爲此幾乎不可能進行單元測試。這似乎不是一個非常實際的解決方案。

在WPF中,您可以將所有頁面的所有頁邊距綁定到相同的ViewModel屬性。這樣,當您的ViewModel屬性更改(假設您正確實施了INotifyPropertychanged或使用了DependencyProperty),您的所有邊距也會發生變化。

+0

所以,最好通過''Thickness'結構a.k.a'Margin'從'MainWindowVM'傳遞給'SheetPageVM'呢? – 2014-09-04 05:45:19

+0

@MosesAprico你可以通過你的XAML Binding中的'MainWindowVM'直接訪問'Margin',通過查找祖先 – WiiMaxx 2014-09-04 06:51:58

相關問題