时,如何解雇依赖属性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