单元格中具有多个超链接的 WPF DataGrid

WPF DataGrid with multiple hyperlinks in a cell

我有一个像这样的 WPF DataGrid

name | articles
-----+-----------------------
N1   | A1.pdf
N2   | A2.pdf, A5.pdf, A6.pdf
N3   |        

现在我希望每篇文章都像 hyperlink 一样可以点击。如果有人被点击,我将添加一个路径到正在显示的名称并打开文件,如

c:\articles\A5.pdf

我有

<DataGrid>
    <DataGrid.Columns>
         <DataGridTextColumn Header="Name" Binding="{Binding Path=Name}"/>
         <DataGridHyperlinkColumn Header="Articles" Binding="{Binding Path=Articles}" />
    </DataGrid.Columns>
</DataGrid>

DataGridHyperlinkColumn 使单元格的完整内容成为一个 link 可点击。如果一个单元格中有多篇文章,我想区分它们。

我该怎么做?

假设 Articles 是或者可以是某种链接列表,您可以使用 DataGridTemplateColumnItemsControlItemsSource 绑定到 Articles 并且每个项目都是单独的 HyperLink

<DataGrid ...>
    <DataGrid.Columns>
        <!-- other columns -->
        <DataGridTemplateColumn Header="Articles">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <ItemsControl ItemsSource="{Binding Articles}">
                        <ItemsControl.ItemsPanel>
                            <ItemsPanelTemplate>
                                <StackPanel Orientation="Horizontal"/>
                            </ItemsPanelTemplate>
                        </ItemsControl.ItemsPanel>
                        <ItemsControl.ItemTemplate>
                            <DataTemplate>
                                <TextBlock>
                                    <Hyperlink NavigateUri="{Binding NavigateUri}">
                                        <TextBlock Text="{Binding DisplayText}"/>
                                    </Hyperlink>
                                </TextBlock>
                            </DataTemplate>
                        </ItemsControl.ItemTemplate>
                    </ItemsControl>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>