時,如何解僱依賴屬性PropertyChangedCallback我有一個自定義控制中的依賴屬性設置如下:實例化自定義類型
public IChartData Data
{
get
{
return (IChartData)GetValue(DataProperty);
}
set
{
SetValue(DataProperty, value);
}
}
public static readonly DependencyProperty DataProperty = DependencyProperty.Register
(
"Data",
typeof(IChartData),
typeof(ChartViewUserControl),
new FrameworkPropertyMetadata() { PropertyChangedCallback = UpdateCharting }
);
及其PropertyChangedCallback這樣:
private static void UpdateCharting(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
// Stuff Happens Here
}
正如你所看到的,依賴項屬性類型是IChartData。其原因是,我可以通過兩種類型(SimpleChartData或ComplexChartData。)這兩種類型都的一個擴展集這樣:
public class SimpleChartData : ObservableCollection<ChartDataItem>, IChartData
和
public class ComplexChartData : ObservableCollection<SimpleChartData>, IChartData
我的問題是,如果我創建一個這樣的類型的實例並添加到集合中,然後PropertyChangedCallback函數按預期觸發。但是,如果我需要清除集合,那麼我將它初始化爲新的,但回調函數不會觸發。我可以在所有使用控件的地方創建一個黑客,但這顯然不理想。如何讓自定義類型實例化時的回調函數觸發。其他建議來解決我的問題當然是受歡迎的。
不要將它初始化爲新的,這不是很聰明。做'collection.Clear()' – Kcvin
你的PropertyChangedCallback實際上就是你的方法'UpdateCharting'。請將其添加到您的帖子中,以便我們可以看到發生了什麼問題。 –
是的,只要我發佈它,就看到了我的錯誤。它是固定的。對於那個很抱歉。 – flyNflip