2013-06-26 26 views
0

我有一個DataGrid帶有行和列。每行對應於我的數據收集中的項目。對於我的其中一列,我想要有一個包含我的數據項名稱文本的超鏈接,當我單擊超鏈接時,它將執行THAT超鏈接項目(它所在的行)的命令數據模板列中的超鏈接在更新DataGrid的CurrentItem時存在問題

希望迄今爲止有意義。

我的問題:如何綁定超鏈接的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

我已經解決我自己的問題,感謝幫助傢伙(笑)

不管怎麼說,只是因爲這可能會幫助某個人,但我沒有使用CurrentItem,因爲當我單擊超鏈接時,它似乎沒有正確更新。相反,我將這些命令所需的數據作爲命令參數提供給我。

因此,該命令實際上只使用我的數據項的名稱,所以不是傳遞整個數據項(當前項),而是通過名稱,而現在它工作正常。

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