0

我已附加财产

    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 chaged 事件(附加行为)中使用此代码来检索对象上下文:

ObjectContext context = FilterableGrid.GetObjectContext(sourceGrid);

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

有任何想法吗?我似乎在这件事上失去理智......

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

4

1 回答 1

0

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

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

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

于 2011-04-13T10:54:51.570 回答