2011-03-26 90 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調用中刪除屬性元數據時,它繼續工作。

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