单元格中具有多个超链接的 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
是或者可以是某种链接列表,您可以使用 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>
我有一个像这样的 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
是或者可以是某种链接列表,您可以使用 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>