我创建了一个具有依赖项属性的用户控件,我需要将其绑定到多个类型。换句话说,它有一个名为“DataSource”的依赖项属性。但是,开发人员可以绑定类型
ObservableCollection<MyCustomType>
或
ObservableCollection<ObservableCollection<MyCustomType>>.
在用户控件的代码中,我想根据检测到的类型不是null或等效的内容来执行两个单独的代码块。我一直在寻找例子,但我认为我对如何做到这一点的看法可能是错误的。指示或方向将不胜感激。
答案 0 :(得分:1)
将您的依赖项属性声明为object
类型的属性。
然后当这个属性的值发生变化时,你可以根据它的值来执行不同的功能,即
public static readonly DependencyProperty DataSourceProperty =
DependencyProperty.Register("DataSource", typeof(object), typeof(MyControl), new PropertyMetaData(OnDataSourceChanged));
private static void OnDataSourceChanged(object sender, DependencyPropertyChangedEventArgs e)
{
var newValue = e.NewValue;
if(newValue == null)
return;
var asSingleLevel = newValue as ObservableCollection<MyCustomType>;
if(asSingleLevel != null)
{
// Do work for single level
}
else
{
var asDoubleLevel = newValue as ObservableCollection<ObservableCollection<MyCustomType>>;
if(asDoubleLevel != null)
{
// Do work for double level
}
}
}