C# 单元格中具有多个超链接的WPF数据网格

C# 单元格中具有多个超链接的WPF数据网格,c#,wpf,mvvm,hyperlink,datagrid,C#,Wpf,Mvvm,Hyperlink,Datagrid,我有一个像这样的WPF数据网格 name | articles -----+----------------------- N1 | A1.pdf N2 | A2.pdf, A5.pdf, A6.pdf N3 | 现在我希望每一篇文章都能像超链接一样点击。如果单击其中一个,我将为显示的名称添加一个路径,并打开文件,如下所示 c:\articles\A5.pdf 我有 <DataGrid> <DataGrid.Columns>

我有一个像这样的WPF数据网格

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
使单元格的完整内容成为一个可点击的链接。如果一个单元格中有多个项目,我希望它们之间有所不同


如何操作?

假设
文章
是或可以是某种链接列表,您可以使用
DataGridTemplateColumn
项目控件
项目资源
绑定到
文章
,每个项目都是独立的
超链接

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


问题在于绑定不起作用<代码>不知道
文章
。它在
DataGrid
本身中工作,但不在模板中工作
文章的类型是什么?它是某种列表吗?您是否尝试将
TextBlock
text设置为某个固定文本而不是绑定?也许
ItemsSource
绑定可以正常工作(应该如此),但内部绑定不起作用,您会看到空元素列表。这应该行得通。
DataGridTemplateColumn
中的所有绑定都在项的上下文中工作DataGrid本身有一个到
List
的绑定。而
文章
列表
。但是VS设计器在编译时和运行时都无法识别
文章。我没有特别设置任何内容。看起来模板不知道DataGrid的绑定。
Articles
是公共属性吗?既然您使用了
列表
(而不是
可观察到的集合
),您何时初始化它?什么时候添加项目?这一切都在
产品的构造函数中吗?这对我来说是个好办法。在为项的构造函数中创建的固定子列表添加答案之前,我已经对其进行了测试,但主体保持不变same@juergend如果你想看看我的工作示例,那么