我在创建类型为"Binding"的DependencyProperty时遇到了问题。其他类型可以正常使用,如果我使用绑定填充它们,则可以成功解析。
在我的场景中,我想获取原始绑定,以便可以将其用于绑定到子对象的属性,就像DataGrid对列所做的那样 - 即对于在列中指定的每个绑定,它会绑定到ItemsSource集合中的每个项,而不是绑定到DataContext本身。
<mg:MultiSelectDataGrid x:Name="Grid" DockPanel.Dock="Left"
ItemsSource="{Binding Path=Rows}" DataContext="{Binding}"
AutoGenerateColumns="False" UriBinding="{Binding Path=UrlItems}">
在我的“MultiSelectDataGrid”中:
public static readonly DependencyProperty UriBindingProperty =
DependencyProperty.Register("UriBinding", typeof(BindingBase),
typeof(MultiSelectDataGrid),
new PropertyMetadata { PropertyChangedCallback = OnBindingChanged});
private static void OnBindingChanged(DependencyObject d,
DependencyPropertyChangedEventArgs e)
{
// This is never enterred
}
public BindingBase UriBinding
{
get { return (BindingBase)GetValue(UriBindingProperty); }
set { SetValue(UriBindingProperty, value); }
}
回调函数从未被调用,属性也从未被设置。我尝试了各种排列组合,有回调函数,没有回调函数。唯一让我取得任何成功的是,如果我用一个字符串替换绑定(例如UriBinding="hello")——在那种情况下它会触发回调函数,并设置属性,但当然会失败,因为它是错误的类型。
我做错了什么?我看到了很多这样的例子,我想这就是DataGrid必须要做的。
谢谢