无法将ObjectContext从DataContext绑定到自定义附加属性

问题描述

|| 我已附加财产
    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\">
我的命名空间在哪里。 我在IsFilterableGrid chaged事件(分派的行为)中使用此代码来检索对象上下文:
ObjectContext context = FilterableGrid.GetobjectContext(sourceGrid);
并且上下文变量总是以null结尾。尽管DataContext for grid不为null,并且指向正确的对象(viewmodel)。 有任何想法吗?我似乎对此失去了理智。 编辑:我进行了更多调查,如果我绑定
local:FilterableGrid.IsFilterableGrid=\"{Binding IsFilterable}\"
,它会很好地工作。但是
local:FilterableGrid.ObjectContext=\"{Binding Context}\"
却没有!也许与传递的值类型有关(ObjectContext而不是字符串或说bool,这是原始类型吗?)?     

解决方法

我终于确实解决了这个问题,甚至无法确定有什么帮助-似乎是.NET或VS中的一个错误。 我所做的是:向RegisterAttached调用添加了一些属性元数据,并添加了OnChanged委托。之后,它开始工作(正确绑定)。然后,当我从RegisterAttached调用中删除属性元数据时,它继续工作。 所以我真的不知道它是什么,但是现在它可以了。