Как сделать содержимое некоторого столбца в сетке данных гиперссылкой? - PullRequest
0 голосов
/ 13 января 2011

Мне интересно, если это простая задача.Мне нужно, чтобы часть текста внутри сетки данных была гиперссылкой.Я сгенерировал контент с помощью 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 ]

4 голосов
/ 13 января 2011

Следующий 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 голос
/ 13 января 2011

Используйте Command на Hyperlink.Если вы хотите перезвонить на DataContext из DataGrid, вам нужно будет использовать FindAncestor и искать тип DataGrid.

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