Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight 将Datagrid单元格动态转换为超链接_Silverlight_Xaml_Datagrid_Ivalueconverter - Fatal编程技术网

Silverlight 将Datagrid单元格动态转换为超链接

Silverlight 将Datagrid单元格动态转换为超链接,silverlight,xaml,datagrid,ivalueconverter,Silverlight,Xaml,Datagrid,Ivalueconverter,如果字符串值以“http”开头,我想将单元格内容转换为超链接。如果发现列值是硬编码的,那么它必须动态工作,并且有很多示例。理想情况下,如果内容以“http”开头,我只希望使用值转换器将单元格的内容替换为hyperlinkbutton 这不起作用,因为我试图用框架元素替换文本。有点困惑如何这样做 在DataTemplate中放置两个控件-TextBlock和Hiperlink 创建HttpVisibile转换器,该转换器返回可见性。对于以“http”和可见性开头的文本可见。对于其他文本折叠。使用此

如果字符串值以“http”开头,我想将单元格内容转换为超链接。如果发现列值是硬编码的,那么它必须动态工作,并且有很多示例。理想情况下,如果内容以“http”开头,我只希望使用值转换器将单元格的内容替换为hyperlinkbutton

这不起作用,因为我试图用框架元素替换文本。有点困惑如何这样做

  • 在DataTemplate中放置两个控件-TextBlock和Hiperlink
  • 创建HttpVisibile转换器,该转换器返回可见性。对于以“http”和可见性开头的文本可见。对于其他文本折叠。使用此转换器将Hiperlink的可见性属性绑定到文本
  • 创建HttpCollapped转换器,该转换器返回可见性。对于以http开头的文本,该转换器已折叠。使用此转换器将TextBlock的可见性属性绑定到文本
  • 通过这三个步骤,您将实现以“http”开头的所有文本都将显示为hiperlink

    <DataTemplate>
      <TextBlock Visibility="{Binding, Converter={StaticResource HttpCollapsedConverter}}" />
      <Hiperlink Visibility="{Binding, Converter={StaticResource HttpVisibleConverter}}" />
    </DataTemplate>
    
    
    
    根据案例的需要绑定每个控件的文本属性

    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
    
    <DataTemplate>
      <TextBlock Visibility="{Binding, Converter={StaticResource HttpCollapsedConverter}}" />
      <Hiperlink Visibility="{Binding, Converter={StaticResource HttpVisibleConverter}}" />
    </DataTemplate>