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

时间:2011-03-26 02:00:41

标签: c# wpf binding attached-properties attachedbehaviors

我附属了

    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事件(atached行为)中使用此代码来检索Object Context:

ObjectContext context = FilterableGrid.GetObjectContext(sourceGrid);

并且上下文变量总是最终为null。虽然网格的DataContext不为null并且指向正确的对象(ViewModel)。

有什么想法吗?我似乎在这方面失去了理智......

编辑:我调查了一下,如果我绑定local:FilterableGrid.IsFilterableGrid="{Binding IsFilterable}",它就能完美运行。但local:FilterableGrid.ObjectContext="{Binding Context}"只是没有!也许它与传递的值的类型有关(ObjectContext而不是字符串或者说bool,它们是原始类型?)?

1 个答案:

答案 0 :(得分:0)

我终于解决了这个问题,甚至不确定是什么帮助 - 似乎它在.NET或VS中都是一个错误。

我做的是:向RegisterAttached调用添加了一些属性元数据,并添加了OnChanged委托。之后它才开始工作(正确绑定)。当我从RegisterAttached调用中删除属性元数据时,它继续工作。

所以我真的不知道它是什么,但现在它有效。