我有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>
如果我单击超级链接所在的单元格,然后单击超链接,一切都会正常工作。但这不是一个非常好的工作流程...如果用户点击超链接,它应该有正确的项目......
答案 0 :(得分:0)
我已经解决了我自己的问题,感谢帮助人(笑)
无论如何,只是因为这可能会帮助后来的人,我没有使用CurrentItem,因为当我点击超链接时它似乎没有正确更新。相反,我将命令所需的数据作为命令参数提供。
因此,该命令实际上只使用了我的数据项的名称,因此我没有传递整个数据项(当前项),而是传递了名称,现在工作正常。
<Hyperlink Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}, Path=DataContext.NavigateToFormCommand}"
CommandParameter="{Binding dataName}">