2011-03-26 93 views
0

我已经附加属性无法从绑定的DataContext ObjectContext的自定义附加属性

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属性(与调试检查)。

这XAML代码:

<DataGrid AutoGenerateColumns="False" Name="gridOrders" 
       local:FilterableGrid.ObjectContext="{Binding Context}" local:FilterableGrid.IsFilterableGrid="True"> 

如果当地是我的命名空间。

我的用户此代码IsFilterableGrid chaged事件(atached行为)来检索对象上下文:

ObjectContext context = FilterableGrid.GetObjectContext(sourceGrid); 

和上下文变量总是最终被空。尽管用于网格的DataContext不为空并指向正确的对象(ViewModel)。

任何想法?我似乎失去了对此的理智...

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

回答

0

我终于确实解决了这个问题,nto甚至可以肯定有什么帮助 - 看起来好像是.NET或VS中的一种错误。

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

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