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