如何使数据网格中的某些列的内容成为超链接?

时间:2011-01-13 20:16:44

标签: wpf binding wpfdatagrid

我想知道这是否是一件容易的事。我需要将datagrid中的一些文本作为超链接。我使用XMLDataProvider生成内容。任何想法都受到高度赞赏。

我的DataGrid如下所示。我正在使用WPF工具包:

<DataGrid x:Name="MainGrid" GridLinesVisibility="Horizontal" AutoGenerateColumns="False" RowHeight="20" ItemsSource="{Binding XPath=/ServicesTiles/Servers}"
                              HeadersVisibility="None" Margin="10,15,0,0" 
                              HorizontalGridLinesBrush="{x:Null}" 
                              BorderBrush="{x:Null}" 
                              VerticalGridLinesBrush="{x:Null}" 
                              Background="{x:Null}"
                              RowBackground="{x:Null}"
                              CellStyle="{DynamicResource DataGridCellStyle1}" 
                              HorizontalAlignment="Left">
                        <DataGrid.Columns>
                            <DataGridTextColumn Binding="{Binding XPath=@Name}" Foreground="#FF6E6E6E" MinWidth="160" />
                            <DataGridTextColumn Binding="{Binding XPath=@Status}" Foreground="#FF6E6E6E" MinWidth="270"/>
                            <DataGridTextColumn Binding="{Binding XPath=@Name2}" Foreground="#FF6E6E6E" MinWidth="220"/>
                            <DataGridTextColumn Binding="{Binding XPath=@Status2}" Foreground="#FF6E6E6E" MinWidth="220"/>
                        </DataGrid.Columns>
                    </DataGrid>

2 个答案:

答案 0 :(得分:4)

以下DataGridColumn应该做你想要的(我没有测试,发表评论,如果它不起作用)

<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock >
                <Hyperlink>
                    <TextBlock Text="{Binding YourProperty}" />                                                                                    
                </Hyperlink>                                    
            </TextBlock>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>                        
</DataGridTemplateColumn>

修改
根据要求,这里我的命题如何插入。让我知道它是否有效......

<DataGrid.Columns> 
 <DataGridTextColumn Binding="{Binding XPath=@Name}" Foreground="#FF6E6E6E" MinWidth="160" /> 
 <DataGridTextColumn Binding="{Binding XPath=@Status}" Foreground="#FF6E6E6E" MinWidth="270"/> 
 <DataGridTextColumn Binding="{Binding XPath=@Name2}" Foreground="#FF6E6E6E" MinWidth="220"/> 
 <DataGridTextColumn Binding="{Binding XPath=@Status2}" Foreground="#FF6E6E6E" MinWidth="220"/> 
 <DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock >
                <Hyperlink>
                    <TextBlock Text="{Binding XPath=@Name2}" />                                                                                    
                </Hyperlink>                                    
            </TextBlock>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>                        
 </DataGridTemplateColumn>

</DataGrid.Columns> 

答案 1 :(得分:1)

利用Command上的Hyperlink。如果您想回复DataContext的{​​{1}},则需要使用DataGrid并搜索类型FindAncestor

DataGrid