Windows Phone 7.1 项目(WP 8.0 SDK),我想将 ItemTemplate 中的当前项目传递给用户控件。
XAML:
<ItemsControl.ItemTemplate>
<DataTemplate>
<local:ShipControl Ship="{Binding}" x:Name="ShipControl"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
ShipControl 背后的代码:
public object Ship
{
get
{
return GetValue(ShipProperty);
}
set
{
SetValue(ShipProperty, value);
}
}
//Used by xaml binding
public static readonly DependencyProperty ShipProperty = DependencyProperty.Register("Ship", typeof(Ship), typeof(Ship), new PropertyMetadata(null, new PropertyChangedCallback(OnShipChanged)));
private static void OnShipChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
//TODO: Set break point here
return;
}
但是,在调试 Ship 时,值 DataBinding 的对象作为值传递,而不是 Ship(因此返回类型是 object 而不是 Ship)。这最终会导致 SetValue 出现异常。Ship-properties 上的其他绑定确实有效,所以我真的不知道。根据这个问题,上面应该工作:
有关在数据绑定上引发异常的示例项目,请参见此处,因为传递的对象是 Binding 而不是数据对象。http://dl.dropbox.com/u/33603251/TestBindingApp.zip