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

发布于 2024-10-12 05:42:46 字数 1456 浏览 2 评论 0原文

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

我的数据网格如下所示。我正在使用 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>

I am wondering if it is an easy task. I need to have some of the text inside the datagrid to be hyperlinks. I generated content with XMLDataProvider. Any ideas are highly appreciated.

My DataGrid looks below. I am working with WPF toolkit:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

只是在用心讲痛 2024-10-19 05:42:46

下面的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> 

The following DataGridColumn should do what you want (I have not tested, make a comment, if it does not work)

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

Edit
as requested, here my proposition how to insert. Let me know if it works...

<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> 
梦里南柯 2024-10-19 05:42:46

使用超链接上的命令。如果您想回调到 DataGridDataContext,您将需要使用 FindAncestor 并搜索类型 DataGrid< /代码>。

        <toolkit:DataGridTemplateColumn>
            <toolkit:DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock>
                        <Hyperlink Command="{Binding DoStuff}"/>
                    </TextBlock >
                </DataTemplate >
            </toolkit:DataGridTemplateColumn.CellTemplate>
        </toolkit:DataGridTemplateColumn>

Make use of the Command on the Hyperlink. If you want to call back into the DataContext of the DataGrid you will need to make use of FindAncestor and search for type DataGrid.

        <toolkit:DataGridTemplateColumn>
            <toolkit:DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock>
                        <Hyperlink Command="{Binding DoStuff}"/>
                    </TextBlock >
                </DataTemplate >
            </toolkit:DataGridTemplateColumn.CellTemplate>
        </toolkit:DataGridTemplateColumn>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文