我已附加财产
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,它们是原始类型?)?