【发布时间】:2011-07-23 07:57:22
【问题描述】:
我已经附加了财产
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);
而且上下文变量总是以 null 结束。虽然网格的 DataContext 不为 null 并且指向正确的对象(ViewModel)。
有什么想法吗?我似乎对此失去了理智......
编辑:我进行了更多调查,如果我绑定local:FilterableGrid.IsFilterableGrid="{Binding IsFilterable}",它会完美运行。但是local:FilterableGrid.ObjectContext="{Binding Context}" 没有!也许它与传递的值的类型有关(ObjectContext 而不是 string 或者说 bool,它们是原始类型?)?
【问题讨论】:
标签: c# wpf binding attached-properties attachedbehaviors