У гиперссылки в столбце данных есть проблемы с обновлением CurrentItem объекта DataGrid.
У меня есть 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>
Если я щелкну ячейку, в которой находится гиперссылка, и ТОГДА нажму на гиперссылку, все будет работать нормально. Но это не очень хороший рабочий процесс... если пользователь нажимает гиперссылку, он должен иметь правильный элемент...
1 ответ
Я решил свою проблему, спасибо за помощь, ребята (смеется).
В любом случае, просто из-за того, что это может помочь кому-то позже, я не использовал CurrentItem, так как он, кажется, не обновляется правильно, когда я нажимаю гиперссылку. Вместо этого я дал данные, необходимые для команды, в качестве параметра команды.
Таким образом, команда фактически использовала только имя моего элемента данных, поэтому вместо передачи всего элемента данных (текущего элемента) я передал имя, и теперь оно работает нормально.
<Hyperlink Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}, Path=DataContext.NavigateToFormCommand}"
CommandParameter="{Binding dataName}">