所以我有一個叫做信號圖的類,當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(導致沒有代碼的回調,只是一個無用的測試)>
我想這不是一個大問題,但我只是想知道什麼人會推薦。
相反,我要更新一次