2013-02-11 31 views
1

我希望这将是非常明显的。我有一个可观察的集合内的视图模型列表,我已经连接到一个gridview。视图很复杂,带有动画等,所以我把它包装在用户控件中。在GridView中绑定一个usercontrols DataContext

我的XAML看起来像这样: -

<GridView Grid.Row="1" ItemsSource="{Binding Tiles, Mode=OneWay}">        
    <GridView.ItemTemplate> 
     <DataTemplate> 
       <local:Tile DataContext="{Binding}" /> 
     </DataTemplate> 
    </GridView.ItemTemplate> 
</GridView> 

但瓦片数据上下文总是空。

有没有简单的方法让这段代码工作?

谢谢

回答

0

尝试删除DataContext="{Binding}"。项目的DataContext默认为ItemsSource集合中的项目。

+0

仍然没有工作。我没有在输出窗口中看到任何类型的错误:( – 2013-02-11 22:03:23

+0

什么是GridView的DataContext? – 2013-02-11 22:15:25

+0

没有一个显式的,所以我相信它从页面获取它的上下文?页面的数据上下文被设置基于页面LoadState事件的导航属性,该虚拟机包含一个名为Tiles的可观察集合,其中包含8个tile虚拟机 – 2013-02-11 23:07:47

0

你怎么知道DataContext总是空?例如,如果要在Tile的构造函数中检查它,则预计它将始终为空,因为绑定过程直到实例化控件后才会发生。

DataContext="{Binding}"基本上没有意义,就像在代码中为自己分配本地变量一样。它没有做任何有用的事情,但也不应该伤害任何东西。如果您获得的物品显示在您的GridView中,而不是Tile内的任何地方的DataContext,那么它的DataContext将是该物品的数据。