プロパティを添付しました
public static ObjectContext GetObjectContext(DataGrid obj)
{
return (ObjectContext)obj.GetValue(ObjectContextProperty);
}
public static void SetObjectContext(DataGrid obj, ObjectContext value)
{
obj.SetValue(ObjectContextProperty, value);
}
public static readonly DependencyProperty ObjectContextProperty =
DependencyProperty.RegisterAttached("ObjectContext", typeof(ObjectContext), typeof(FilterableGrid));
また、正しい ObjectContext に設定された Context プロパティを持つ ViewModel もあります (デバッガーでチェック)。
そして、この XAML コード:
<DataGrid AutoGenerateColumns="False" Name="gridOrders"
local:FilterableGrid.ObjectContext="{Binding Context}" local:FilterableGrid.IsFilterableGrid="True">
local は私の名前空間です。
IsFilterableGrid の変更されたイベント (接続された動作) でこのコードを使用して、オブジェクト コンテキストを取得します。
ObjectContext context = FilterableGrid.GetObjectContext(sourceGrid);
そして、コンテキスト変数は常に null になります。グリッドの DataContext は null ではなく、正しいオブジェクト (ViewModel) を指していますが。
何か案は?これで正気を失いそうです…
編集:もう少し調査しましたが、バインドするlocal:FilterableGrid.IsFilterableGrid="{Binding IsFilterable}"
と完全に機能します。しかし、local:FilterableGrid.ObjectContext="{Binding Context}"
そうではありません!渡される値の型と何か関係があるのかもしれません (プリミティブ型である文字列の代わりに ObjectContext または bool と言いますか?)。