Реализация кликабельных гиперссылок в сетку данных в WPF - PullRequest
0 голосов
/ 06 февраля 2020

В настоящее время я работаю над проектом, в котором мне необходимо прочитать информацию из файла Excel и отобразить результаты на основе определенных параметров поиска и отобразить всю строку, где значение искомого параметра равно значению параметра в строке в файле Excel. Затем я отображаю информацию из каждой соответствующей строки в DataGrid в отдельном окне. Одна из частей информации, которая отображается в DataGrid, - это ссылка, которая указывает на местоположение на сервере компании, где можно найти информацию о найденных элементах. Я хотел бы знать, как сделать эту ссылку кликабельной и, щелкнув по ней, перевести пользователя в каталог с файлами на сервере. Возможно, я должен отметить, что DataGrid содержится в обычном окне (например, не в навигационном окне), и расположение файла на сервере действует как гиперссылка на сам документ Excel, поэтому в документе Excel я могу щелкнуть ссылку и это приведет меня к соответствующему местоположению сервера. Я только что разочаровался, пытаясь добиться такого же поведения, когда ссылка на DataGrid в окне моего приложения отображает результаты поиска. Я пробовал несколько решений, таких как попытка сделать столбец, содержащий ссылку, DataGridHyperlinkColumn и попытка настроить событие и обработчик события для события Hyperlink.Click, но безуспешно, и я не могу найти решение, которое работает где угодно Любая помощь или руководство по этому вопросу будет принята с благодарностью.

1 Ответ

0 голосов
/ 07 февраля 2020

Возможно, вам следует определить DataGridTemplateColumn в вашем XAML. Затем вы можете назначить любой элемент управления CellTemplate или CellEditingTemplate

. В следующем примере я использую свой UserControl для редактирования и стандартный TextBox для отображения. UserControl может содержать код для обработки кликов или любой другой

 <DataGridTemplateColumn ClipboardContentBinding="{x:Null}" Header="{x:Static p:Resources.Effect}" HeaderStyle="{StaticResource TimeCol}">
                                <DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <TextBlock x:Name="tbEffect" Text="{Binding Effect, Mode=TwoWay, Converter={StaticResource TextToTimeConverter}}" Background="Transparent"/>
                                    </DataTemplate>
                                </DataGridTemplateColumn.CellTemplate>
                                <DataGridTemplateColumn.CellEditingTemplate>
                                    <DataTemplate>
                                        <local:TimeTextBox x:Name="tmtEffect" TimeText="{Binding Effect, Converter={StaticResource TextToTimeConverter }, UpdateSourceTrigger=LostFocus, Mode=TwoWay}"/>

                                    </DataTemplate>
                                </DataGridTemplateColumn.CellEditingTemplate>
                            </DataGridTemplateColumn>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...