<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d"
Width="1024" Height="1280">
<Grid Background="Black">
<Image MaxWidth="500" MaxHeight="500" Source="{DynamicResource H_ThankYou_Image}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
<UserControl.Resources>
<BitmapImage x:Key="H_ThankYou_Image" UriSource="{DynamicResource H_ThankYou_ImagePath}"/>
<sys:String x:Key="H_ThankYou_ImagePath">"../../../../Graphics/Icon_Email.png"</sys:String>
</UserControl.Resources>
</UserControl>
它表示System.String類型的對象不能應用於期望類型System.Uri的屬性。如何將字符串轉換爲xaml中的Uri?
當我嘗試這樣的事:
<sys:Uri x:Key="H_ThankYou_ImagePath">"../../../../Graphics/Icon_Email.png"</sys:Uri>
它說名「URI」不會在系統命名空間中?
EDIT1:
我使用該解決方案@Clemens建議嘗試: 它適用於第一次運行(Icon_Email.png),但是當我試圖動態地改變這樣的價值: userControl.Resources["H_ThankYou_ImagePath"] = "../../../../Graphics/Icon_Email2.png"
的跟隨出現錯誤:
Cannot convert '<null>' from type '<null>' to type
'System.Windows.Media.ImageSource' for 'en-US' culture with default
conversions; consider using Converter property of Binding.
NotSupportedException:'System.NotSupportedException: ImageSourceConverter cannot convert from (null).
如果您直接使用'H_ThankYou_ImagePath'作爲'Image.Source'屬性的值,它應該可以工作。 WPF內置了從'string'到'ImageSource'的轉換。 – Clemens
它不是它的動態資源。 Source =「../../../../ Graphics/Icon_Email.png」可以工作,但是。 –
你不能使用StaticResource? – Clemens