Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 如何在WPF项目中使用具有绝对路径的图像?_Xml_Wpf_Image - Fatal编程技术网

Xml 如何在WPF项目中使用具有绝对路径的图像?

Xml 如何在WPF项目中使用具有绝对路径的图像?,xml,wpf,image,Xml,Wpf,Image,在XML中,我绝对引用了Image文件。我需要在WPF应用程序中动态显示此图像,而不将图像包含在project forder或程序集中 <imageUrl>C:\data\img.png</imageUrl> C:\data\img.png 我想知道: 在WPF中是可能的,怎么做 XML正确吗 我应该做点什么吗 PS:WPF项目位于与图像不同的文件夹中。假设您已经准备好从XML文件读取数据的代码。您只需创建位图图像,并将其设置为图像控制源 XAML <Ima

在XML中,我绝对引用了
Image
文件。我需要在WPF应用程序中动态显示此图像,而不将图像包含在project forder或程序集中

<imageUrl>C:\data\img.png</imageUrl>
C:\data\img.png
我想知道:

  • 在WPF中是可能的,怎么做
  • XML正确吗
  • 我应该做点什么吗

PS:WPF项目位于与图像不同的文件夹中。

假设您已经准备好从XML文件读取数据的代码。您只需创建
位图图像
,并将其设置为图像控制源

XAML

<Image x:Name="img"/>

当然,您必须从XML文件中读取字符串并将其传递给Uri,而不是直接给出字符串。

是的,这是可能的,您可以这样做:

XAML

<Grid>
    <Image Name="MyImage"
           Source="{Binding Path=MyImageSource}"
           Width="200"
           Height="200" />
</Grid>
如果尝试绑定图像时出现错误,则可能会出现这种情况,您可以尝试使用和:

TargetNullValue
在源的值为空时返回您的值

FallbackValue
在绑定无法返回值时返回您的值

使用
TargetNullValue
FallbackValue
的示例:

<!-- xmlns:sys="clr-namespace:System;assembly=mscorlib" -->

<Window.Resources>
    <!-- Test data -->
    <local:TestDataForImage x:Key="MyTestData" />

    <!-- Image for FallbackValue -->
    <sys:String x:Key="ErrorImage">pack://application:,,,/NotFound.png</sys:String>

    <!-- Image for NULL value -->
    <sys:String x:Key="NullImage">pack://application:,,,/NullImage.png</sys:String>
</Window.Resources>

<Grid DataContext="{StaticResource MyTestData}">
    <Image Name="ImageNull"
           Width="100" 
           Height="100"
           Source="{Binding Path=NullString, TargetNullValue={StaticResource NullImage}}" />

    <Image Name="ImageNotFound"
           Width="100" 
           Height="100" 
           Source="{Binding Path=NotFoundString, FallbackValue={StaticResource ErrorImage}}" />
</Grid>

pack://application:,,,/NotFound.png
pack://application:,,,/NullImage.png
希望项目中包含以下图像:ErrorImage和NullImage

有关更多信息,请参阅以下链接:

public partial class MainWindow : Window
{
    // He must use the INotifyPropertyChanged method
    public string MyImageSource
    {
        get;
        set;
    }

    public MainWindow()
    {
        InitializeComponent();

        // Here you get in advance path to Image from XML
        MyImageSource = "C:\\img.jpg";

        this.DataContext = this;
    }
}
<!-- xmlns:sys="clr-namespace:System;assembly=mscorlib" -->

<Window.Resources>
    <!-- Test data -->
    <local:TestDataForImage x:Key="MyTestData" />

    <!-- Image for FallbackValue -->
    <sys:String x:Key="ErrorImage">pack://application:,,,/NotFound.png</sys:String>

    <!-- Image for NULL value -->
    <sys:String x:Key="NullImage">pack://application:,,,/NullImage.png</sys:String>
</Window.Resources>

<Grid DataContext="{StaticResource MyTestData}">
    <Image Name="ImageNull"
           Width="100" 
           Height="100"
           Source="{Binding Path=NullString, TargetNullValue={StaticResource NullImage}}" />

    <Image Name="ImageNotFound"
           Width="100" 
           Height="100" 
           Source="{Binding Path=NotFoundString, FallbackValue={StaticResource ErrorImage}}" />
</Grid>