文字列値が「http」で始まる場合、セルの内容をハイパーリンクに変換したい。列の値をハードコーディングしていることがわかった場合は、動的に機能する必要があり、多くの例があります。理想的には、コンテンツが「http」で始まる場合は、値コンバーターを使用してセルのコンテンツをハイパーリンクボタンに置き換えたいと思います。
<esri:FeatureDataGrid x:Name="QueryDetailsDataGrid" Grid.Row="0" Margin="0"
AutoGenerateColumns="False" CanUserSortColumns="True"
VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
HeadersVisibility="Column" HorizontalScrollBarVisibility="Auto"
SelectionChanged="QueryDetailsDataGrid_SelectionChanged"
LoadingRow="QueryDetailsDataGrid_LoadingRow"
Foreground="White" RowBackground="#555555"
AlternatingRowBackground="Black"
RowStyle="{StaticResource DataGridRowStyle}" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click" SourceObject="{Binding ElementName=btnSave}">
<actions:ExportTable />
</i:EventTrigger>
</i:Interaction.Triggers>
<esri:FeatureDataGrid.Columns>
<sdk:DataGridTemplateColumn>
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding , Converter={StaticResource LinkConverter}}" />
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
</esri:FeatureDataGrid.Columns>
</esri:FeatureDataGrid>
コンバータ
Public Class LinkConverter
Implements IValueConverter
Public Function Convert(value As Object, targetType As System.Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert
If value Is Nothing Then
Return vbNull
Exit Function
End If
Dim _value As String = TryCast(value, String)
If _value Is Nothing Then
Return value
End If
If _value.StartsWith("http") Then
Dim hl As HyperlinkButton = New HyperlinkButton With {.NavigateUri = New Uri(_value)}
Return hl
Else
Return value
End If
End Function
Public Function ConvertBack(value As Object, targetType As System.Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack
Dim _value As String = TryCast(value, String)
If _value.StartsWith("http") Then
Dim hl As Hyperlink = New Hyperlink With {.NavigateUri = New Uri(_value)}
Return hl
Else
Return value
End If
End Function
End Class
テキストをフレームワーク要素に置き換えようとしているため、これは機能しません。ちょっと、この方法でそれを行う方法について困惑しました....