gpt4 book ai didi

WPF DataGrid DataGridHyperlinkColumn 绑定(bind)到 Uri

转载 作者:行者123 更新时间:2023-12-01 22:45:06 24 4
gpt4 key购买 nike

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

        <dg:DataGridHyperlinkColumn IsReadOnly="True"
Header="Uri" Binding="{Binding Path=NavigURI}" />

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

<DataGridHyperlinkColumn Header="Email" Binding="{Binding Email}"  ContentBinding="{Binding Email, Converter={StaticResource EmailConverter}}" />

我也尝试过使用转换器,但在两种情况下,使用或不使用转换器列都是空的。调试显示传递给“转换”方法的值始终为空。我的问题:如果出于任何原因我想绑定(bind)到 Uri 属性,那么 Codeplex 的最新 DataGrid 是否可行?

最佳答案

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

<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>

在 DataGrid 的 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();
}
}

关于WPF DataGrid DataGridHyperlinkColumn 绑定(bind)到 Uri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2474801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com