无法从后面的代码加载位图图像

时间:2019-07-10 07:21:07

标签: c# wpf image xaml binding

我正在使用的窗口的目的是显示图像,该图像是从前一个窗口中选择的,因此后面的代码将_scan作为参数,其中包含所需的图像。

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="66*"/>
        <RowDefinition Height="191*"/>
    </Grid.RowDefinitions>
    <Border Height="600" Width="600" Margin="197,86,197,85" Grid.RowSpan="2">
        <Image Source="{Binding img}" HorizontalAlignment="Center" VerticalAlignment="Center" Panel.ZIndex="1"/>
    </Border>
</Grid>

后面的代码

private Scan scan { get; set; }
BitmapImage img;

public ImageEdit(Scan _scan)
{
    InitializeComponent();
    scan = _scan;
    window.DataContext = this;
    img = scan.Image;
}

类文件Scan.cs

public Scan(int scanid,string image)
{
    ScanId = scanid;
    var path = System.IO.Path.Combine(Environment.CurrentDirectory, "Image", image);
    Image = new Uri(path);
}

public dynamic Image
{
    get { return new BitmapImage(_image); }
    set
    {
        _image = value;
        RaisePropertyChanged("Image");
    }
}
  

System.Windows.Data错误:40:BindingExpression路径错误:在“对象”“ ImageEdit”(名称=“窗口”)上找不到“ img”属性。 BindingExpression:Path = img; DataItem ='ImageEdit'(Name ='window');目标元素是'Image'(Name ='');目标属性为“来源”(类型为“图片来源”)

如下所示,我只能在窗口上成功显示图像:

<Image HorizontalAlignment="Center" VerticalAlignment="Center" Panel.ZIndex="1">
    <Image.Source>
        <BitmapImage UriSource="C:\\Users\\user\\Desktop\\MyProject\\project1\\bin\\Debug\\Image\\1.png"/>
    </Image.Source>
</Image>

但是,正如我在开头提到的,所需的图像取决于从前一个窗口中选择了哪个图像,这必须以编程方式完成,而不是直接将Uri分配给BitmapImage.UriSource。另外,如果我尝试将{Binding img}分配给BitmapImage.UriSource并将Uri对象分配给img,程序执行会崩溃并在Output中显示以下消息:

  

System.Windows.Media.Animation警告:6:无法执行操作,因为指定的Storyboard从未应用于此对象进行交互式控制。动作=“删除”; Storyboard ='System.Windows.Media.Animation.Storyboard'; Storyboard.HashCode ='23621495'; Storyboard.Type ='System.Windows.Media.Animation.Storyboard'; TargetElement ='System.Windows.Media.Animation.Storyboard'; TargetElement.HashCode ='23621495'; TargetElement.Type ='System.Windows.Media.Animation.Storyboard'

我不知道为什么会出现这样的消息。它只是BitmapImage,甚至不包含任何动画。

无论如何,如何才能成功地从代码后面加载图像?

0 个答案:

没有答案