WPF DataGrid DataGridHyperlinkColumn绑定到Uri

Mic*_*Mit 0 wpf datagrid

绑定到字符串类型的属性(" http://something.com ")时没问题.但是,我似乎在旧示例中​​已经看到直接绑定到Uri属性.

        <dg:DataGridHyperlinkColumn IsReadOnly="True"
                    Header="Uri" Binding="{Binding Path=NavigURI}" />
Run Code Online (Sandbox Code Playgroud)

NavigURI是Uri.最近的文档似乎需要一个转换器

<DataGridHyperlinkColumn Header="Email" Binding="{Binding Email}"  ContentBinding="{Binding Email, Converter={StaticResource EmailConverter}}" />
Run Code Online (Sandbox Code Playgroud)

我也尝试使用转换器,但无论是否有转换器列都是空的.调试显示传递给"Convert"方法的值始终为null.我的问题:如果出于任何原因我想要绑定到Uri属性,那么来自Codeplex的最新DataGrid是否可行?

dgv*_*vid 5

ContentBinding属性可用于显示实际URL以外的文本.例如,如果我使用ProductName中友好的,人类可读的文本和ProductUri中的实际URL 绑定数据,我可能会这样做:

<DataGridHyperlinkColumn Name="productColumn"
                     Binding="{Binding Path=ProductUri}"
                     ContentBinding="{Binding Path=ProductName}"
                     Header="Product"
                     IsReadOnly="True"
                     Width="*">
<DataGridHyperlinkColumn.ElementStyle>
    <Style TargetType="TextBlock">
        <EventSetter Event="Hyperlink.Click" Handler="OnHyperlinkClick" />
    </Style>
</DataGridHyperlinkColumn.ElementStyle>
Run Code Online (Sandbox Code Playgroud)

在用于数据网格中MSDN示例代码,所述EmailConverter被剥出"的mailto:"与@和之后的所有,只显示所述mailto连结的用户名部分.但是,底层链接(HTML术语中的href属性)保持不变.因此,例如,可见文本可能是"mjgreen",但处理程序OnHyperlinkClick将收到"mailto:mjgreen@company.com"的NavigateUri属性.顺便说一下,获取NavigateUri的代码如下所示:

private void OnHyperlinkClick(object sender, RoutedEventArgs e)
{
    var destination = ((Hyperlink)e.OriginalSource).NavigateUri;
    Trace.WriteLine("Browsing to " + destination);

    using (Process browser = new Process())
    {
        browser.StartInfo = new ProcessStartInfo
            {
                FileName = destination.ToString(),
                UseShellExecute = true,
                ErrorDialog = true
            };
            browser.Start();
        }
}
Run Code Online (Sandbox Code Playgroud)