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 ではなく値として渡されます (したがって、戻り値の型は Ship ではなくオブジェクトになります)。これにより、最終的に SetValue で例外が発生します。船のプロパティの他のバインディングは機能するので、私にはまったくわかりません。この質問によると、上記はうまくいくはずです:
渡されたオブジェクトがデータ オブジェクトではなく Binding であるため、データ バインディングで例外をスローするサンプル プロジェクトについては、こちらを参照してください。http://dl.dropbox.com/u/33603251/TestBindingApp.zip