我有像这样的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
使单元格的完整内容成为可链接的一个链接。如果单元格中有多篇文章,我想区分它们。
我该怎么做?
答案 0 :(得分:2)
假设Articles
是或可以是某种类型的链接列表,您可以使用DataGridTemplateColumn
将ItemsControl
与ItemsSource
绑定到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>