2013-06-26 10 views
0

У меня есть DataGrid с строками и столбцами. Каждая строка соответствует элементу в моей коллекции данных. Для одного из моих столбцов я хочу иметь гиперссылку с текстом имени моего элемента данных, а когда я нажимаю на гиперссылку, она выполнит команду для пункта гиперссылки THAT (строка, в которой он находится)Гиперссылка в столбце datatemplate имеет проблемы с обновлением CurrentItem DataGrid

Надеюсь, это имеет смысл до сих пор.

Моя проблема: как связать гиперссылку 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}">