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

时间:2015-02-05 09:19:42

标签: c# wpf mvvm hyperlink datagrid

我有像这样的WPF DataGrid

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

现在我希望每篇文章都像超链接一样可点击。如果单击一个,我将添加一个显示名称的路径并打开文件,如

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使单元格的完整内容成为可链接的一个链接。如果单元格中有多篇文章,我想区分它们。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

假设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>