У меня есть свойство
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));
И у меня также есть ViewModel, у которого есть свойство Context, для которого установлено правильное значение ObjectContext (проверено с помощью отладчика).
И этот код XAML:
<DataGrid AutoGenerateColumns="False" Name="gridOrders"
local:FilterableGrid.ObjectContext="{Binding Context}" local:FilterableGrid.IsFilterableGrid="True">
Где local - мое пространство имен.
Я использую этот код в событии с переменными именами IsFilterableGrid (поведение atached) для извлечения контекста объекта:
ObjectContext context = FilterableGrid.GetObjectContext(sourceGrid);
И переменная контекста всегда заканчиваетсядо нуля.Хотя DataContext для сетки не является нулевым и указывает на правильный объект (ViewModel).
Есть идеи?Кажется, я теряю рассудок ...
Редактировать: Я немного больше исследовал, и если я связываю local:FilterableGrid.IsFilterableGrid="{Binding IsFilterable}"
, это работает отлично.Но local:FilterableGrid.ObjectContext="{Binding Context}"
просто нет!Может быть, это как-то связано с типом передаваемого значения (ObjectContext вместо string или скажем, bool, которые являются примитивными типами?)?