如何获取网格行的datacontext

时间:2013-03-06 09:12:31

标签: wpf data-binding datacontext

我有一个Datagrid,其中的行绑定到viewmodels。

在我的第一列中,我有一个图像控件,它绑定到行中的itemno。这很好。

现在,我想在此图片上显示一个工具提示,其中显示了更大版本的图片。我认为这很容易,但我已经意识到,工具提示可能没有得到行的datacontext。

那么,如何获取工具提示,绑定到绑定行的相同数据? 在我的下面的代码中,工具提示上的ItemNo为null,但在“父”图像控件上,它具有正确的值。

<DataGridTemplateColumn Header="Image" IsReadOnly="True">
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <controls:ItemImage Width="16" Height="16" DataContext="{Binding ItemNo, IsAsync=True}" >
                                        <controls:ItemImage.ToolTip>
                                            <StackPanel>
                                                <controls:ItemImage Width="300" Height="300" DataContext="{Binding ItemNo, IsAsync=True}" />
                                                <Label Content="{Binding ItemNo}" />
                                            </StackPanel>
                                        </controls:ItemImage.ToolTip>
                                    </controls:ItemImage>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>

1 个答案:

答案 0 :(得分:3)

默认情况下,您的工具提示dataContext已设置为ItemNo;这就是重置为:

的原因

<controls:ItemImage Width="300" Height="300" DataContext="{Binding ItemNo, IsAsync=True}" />
......不起作用。

只需删除DataContext="{Binding ItemNo, IsAsync=True}"

即可

使用snoop它可以帮助您查看绑定错误或已设置的dataContext。