【发布时间】:2012-09-05 13:55:36
【问题描述】:
我正在尝试将我的用户控件数据上下文绑定到视图模型对象。由于未知原因,在 Window.Resources 中设置 DataContext 结果给出了
System.Windows.Data 错误:3:找不到提供的元素 数据上下文。绑定表达式:路径=区域过滤器;数据项=null;
在 window.resources 之外设置相同的数据上下文非常完美。一段代码应该可以解决问题:
<Window>
<Window.Resources>
<GridViewColumnCollection x:Key="eventColumns">
<GridViewColumn DisplayMemberBinding="{Binding Path=Area}">
<GridViewColumn.Header>
<v:FilterV DataContext="{Binding AreaFilter}"/> <!--here is the problem-->
</GridViewColumn.Header>
</GridViewColumn>
</GridViewColumnCollection>
</Window.Resources>
<Grid>
<v:FilterV DataContext="{Binding AreaFilter}"/> <!-- here it works OK -->
<GridViewHeaderRowPresenter Name="listHeader" Columns="{StaticResource eventColumns}"/>
</Grid>
FilterV 是我目前简化为仅显示文本块的 UserControl。 在 Grid 内,它显示 AreaFilter.Name 没有问题。 这两种情况下设置DataContext有什么区别,如何解决?
【问题讨论】:
-
这样使用的绑定是指另一个DataContext。所以即使你设置了DataContext,你也需要有另一个有效的DataContext才能从中获取属性AreaFilter。
标签: wpf mvvm binding datacontext