NavigateUri作为DynamicResource?

时间:2018-09-05 08:29:36

标签: c# wpf

我正在使用资源字典提供多语言支持,并将我的标签链接为DynamicResource。但是,是否有一种简便的方法也可以将超链接的NavigateUri用作DynamicResource?我在mscorlib中找不到任何Uri类型。超链接控件应链接到的Uri依赖于语言,我希望使其保持简单并在我的词典中包含超链接。

在字典中:

xmlns:system="clr-namespace:System;assembly=mscorlib"

<system:String x:Key="ww-url-label">Password forgotten?</system:String>
<system:String x:Key="ww-url">https://somelink</system:String>

在xaml窗口中:

<Hyperlink NavigateUri="{DynamicResource ww-url}" RequestNavigate="Hyperlink_RequestNavigate">
<TextBlock Text="{DynamicResource ww-url-label}" />
</Hyperlink>

显然,NavigateUri不起作用。我当然可以以编程方式添加该链接,但是我希望将其保留在ResourceDictionary中。有一个简单的技巧可以做到这一点吗?

1 个答案:

答案 0 :(得分:1)

  

显然NavigateUri不起作用

显然不是。。如果遇到错误,请始终将其添加到问题中。

您的错误是您试图使用string来指定Uri,所以您得到了

  

无法将类型为“ System.String”的对象转换为类型为“ System.Uri”。

进行此更改以定义ww-url,就可以了:

<ResourceDictionary xmlns:sys="clr-namespace:System;assembly=System" ...>
    <sys:Uri x:Key="ww-url">https://somelink</sys:Uri>
</ResourceDictionary>