2013-10-02 57 views
1

所以我有一個叫做信號圖的類,當scrollviewer執行任務時我想更新它。WPF如何使用屬性重繪另一個元素?

信號圖由這些依賴屬性連接到的ScrollViewer:

public double MinimumXInDIPs 
    { 
     get { return (double)GetValue(MinimumXInDIPsProperty); } 
     set 
     { 
     SetValue(MinimumXInDIPsProperty, value); 
     } 
    } 
    public static readonly DependencyProperty MinimumXInDIPsProperty = 
     DependencyProperty.Register("MinimumXInDIPs", 
     typeof(double), typeof(SignalGraph), 
     new FrameworkPropertyMetadata(new double())); 

    public double ViewportWidth 
    { 
     get { return (double)GetValue(ViewportWidthProperty); } 
     set 
     { 
     SetValue(ViewportWidthProperty, value); 
     } 
    } 
    public static readonly DependencyProperty ViewportWidthProperty = 
     DependencyProperty.Register("ViewportWidth", 
     typeof(double), typeof(SignalGraph), 
     new FrameworkPropertyMetadata(new double())); 


    public int UnitsOfTimePerAxisDivision 
    { 
     get { return (int)GetValue(UnitsOfTimePerAxisDivisionProperty); } 
     set 
     { 
     SetValue(UnitsOfTimePerAxisDivisionProperty, value); 
     } 
    } 
    public static readonly DependencyProperty UnitsOfTimePerAxisDivisionProperty = 
     DependencyProperty.Register("UnitsOfTimePerAxisDivision", 
     typeof(int), typeof(SignalGraph), 
     new FrameworkPropertyMetadata(1)); 

不過,我不希望只使用一個依賴屬性回調每個因爲這些屬性的所有3的三個屬性的可能會在縮放時發生變化,這會導致重繪信號圖的方式過多。

通常情況下,我認爲我只是將所有信號圖表註冊到ZoomEvent中,但信號圖表無法直接訪問scrollviewer。我認爲在WPF中以某種方式使用屬性來連接它們會更自然。

我只能在scrollviewer上創建一個屬性bool NeedsToRedraw,當縮放發生時我只設置爲true。然後我可以將signalgraphs綁定到該屬性,並擁有一個propertychangedcallback來調用重繪函數。但是,如果我將bool重置爲false,它將最終再次調用propertychangedcallback,即使我並不真的需要調用該函數。

這是否會效率低下?我覺得在某些方面事件會更乾淨,因爲當我將值設置爲true(導致重繪)時,我不會首先調用propertychangedcallback,然後再次將值設置爲false(導致沒有代碼的回調,只是一個無用的測試)>

我想這不是一個大問題,但我只是想知道什麼人會推薦。

相反,我要更新一次

回答

1

使用「NeedsToRedraw」將看似做工精細,並且多餘的屬性更改回調不太可能造成性能瓶頸。然而,這些也許是一個更好的選擇:

  1. 由於這三個屬性連接起來,使它們成爲一個單一的一個,在一個包裝類像ZoomProperties或什麼的。 (當然,這也需要改變消費者級別。)
  2. 在目標上添加一個定時器。當屬性更改時啓動/重置它,並且只有在特定增量(可能是50ms?)時才觸發處理程序。
相關問題