datatemplatecolumn中的超链接存在更新DataGrid的CurrentItem的问题

时间:2013-06-26 14:35:16

标签: xaml datagrid hyperlink currentitem

我有DataGrid行和列。每行对应于我的数据集合中的项目。对于我的一个列,我希望有一个超链接,其中包含我的数据项名称的文本,当我点击超链接时,它将执行THAT超链接项目的命令(它所在的行)

希望到目前为止有道理。

我的问题:如何绑定超链接的CommandParameter以使用当前行的数据项?我遇到了一个问题,如果我选择了一些随机单元格(比如第3行第2列)并且我单击第1行第1列中的超链接,它会说当前项目是第3行中的项目而不是第1行! !

这是我的xaml代码:

<DataGridTemplateColumn Width="80">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock>
                <Hyperlink Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}, Path=DataContext.NavigateToFormCommand}"
                   CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}, Path=CurrentItem}">
                    <TextBlock Text="{Binding dataName}" />
                </Hyperlink>
            </TextBlock>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

如果我单击超级链接所在的单元格,然后单击超链接,一切都会正常工作。但这不是一个非常好的工作流程...如果用户点击超链接,它应该有正确的项目......

1 个答案:

答案 0 :(得分:0)

我已经解决了我自己的问题,感谢帮助人(笑)

无论如何,只是因为这可能会帮助后来的人,我没有使用CurrentItem,因为当我点击超链接时它似乎没有正确更新。相反,我将命令所需的数据作为命令参数提供。

因此,该命令实际上只使用了我的数据项的名称,因此我没有传递整个数据项(当前项),而是传递了名称,现在工作正常。

<Hyperlink Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}, Path=DataContext.NavigateToFormCommand}"
                   CommandParameter="{Binding dataName}">