WPF-无法转换'&书信电报;空>';从类型'&书信电报;空>';输入';System.Uri';

WPF-无法转换'&书信电报;空>';从类型'&书信电报;空>';输入';System.Uri';,wpf,data-binding,Wpf,Data Binding,我有一个简单的用户控件,可以在文本块中显示超链接: LinkTextBlock.xaml: <TextBlock > <Hyperlink NavigateUri="{Binding Url, ElementName=root}" > <TextBlock Text="{Binding Text, ElementName=root}" /> </Hyperlink> </TextBlock> 然

我有一个简单的用户控件,可以在文本块中显示超链接:

LinkTextBlock.xaml:

<TextBlock >
    <Hyperlink NavigateUri="{Binding Url, ElementName=root}" >
        <TextBlock Text="{Binding Text, ElementName=root}" />
    </Hyperlink>   
</TextBlock>

然后,在列表框的DataTemplate中,我有:

<Controls:LinkTextBlock Text="{Binding Email}" Url="{Binding Email}" />


当我运行应用程序时,它似乎工作得很好。控件正确显示超链接,并且没有明显的问题。但是,当我查看输出窗口时,会发现异常,每个ListBox项有一个异常:

System.Windows.Data错误:22:无法 将“”从类型“”转换为 为“en-US”区域性键入“System.Uri” 具有默认转换;考虑 使用绑定的转换器属性。 NotSupportedException:'系统。NotSupportedException: UriTypeConverter无法从转换 (空)。在 System.ComponentModel.TypeConverter.GetConvertFromException(对象 价值)在 System.ComponentModel.TypeConverter.ConvertFrom(ITypeDescriptorContext 上下文、文化信息文化、对象 价值)在 System.UrityConverter.ConvertFrom(ITypeDescriptorContext 上下文、文化信息文化、对象 价值)在 MS.Internal.Data.DefaultValueConverter.ConvertHelper(对象 o、 类型destinationType, DependencyObject targetElement, CultureInfo区域性,布尔值 isForward)'

为什么会这样?我知道绑定错误是绑定到NavigateURI的结果。 你对我有什么建议吗?我能怎么办?我非常感谢你的意见

谢谢

这不应该吗

<TextBlock >
    <Hyperlink NavigateUri="{Binding Url, ElementName=root}" >
        <TextBlock Text="{Binding Text, ElementName=root}" />
    </Hyperlink>   
</TextBlock>

是这个吗

<TextBlock  Text="{Binding Text, ElementName=root}">
    <Hyperlink NavigateUri="{Binding Url, ElementName=root}" />
</TextBlock>

这不应该吗

<TextBlock >
    <Hyperlink NavigateUri="{Binding Url, ElementName=root}" >
        <TextBlock Text="{Binding Text, ElementName=root}" />
    </Hyperlink>   
</TextBlock>

是这个吗

<TextBlock  Text="{Binding Text, ElementName=root}">
    <Hyperlink NavigateUri="{Binding Url, ElementName=root}" />
</TextBlock>

我想出来了。问题在于执行从字符串到Uri的隐式转换时,因为NavigateUri是Uri类型。
我需要创建一个转换器来将字符串转换为Uri,将我的属性从字符串更改为Uri,所有这些都可以正常工作,没有例外。

我找到了答案。问题在于执行从字符串到Uri的隐式转换时,因为NavigateUri是Uri类型。
我需要创建一个转换器来将字符串转换为Uri,将我的属性从字符串更改为Uri,所有这些都可以正常工作,没有例外。

不太可能。超链接没有视觉表示。因此,如果你按照你的建议去做,你最终只会得到一个文本块,没有任何东西可以点击。而且,除了没有视觉效果之外,你的建议没有解决我的问题,这是例外。谢谢,不太好。超链接没有视觉表示。因此,如果你按照你的建议去做,你最终只会得到一个文本块,没有任何东西可以点击。而且,除了没有视觉效果之外,你的建议没有解决我的问题,这是例外。谢谢,“电子邮件”是从什么样的东西来的。它的类型是什么?Peter,Email只是绑定到当前DataContext的对象的字符串属性。“Email”来自什么类型的对象。它的类型是什么?Peter,电子邮件只是绑定到当前DataContext的对象的字符串属性。你能提供转换器吗?你能提供转换器吗