边框上的位图图像未在UI中更新

本文关键字:UI 更新 图像 位图 边框 | 更新日期: 2023-09-27 18:26:53

我有一个WPF应用程序,从ThreadPool.QueueUserWorkItem()下载图像。在UI中,我有一个DispatcherTimer,它检查应该缓存图像的文件夹,如果找到了,它应该将它们显示为两个Border元素和一个Button元素的背景。

我可以看到文件被下载到filePath,我可以逐步浏览它创建BitmapImage对象的代码,但我没有在屏幕上看到任何渲染。

相关代码粘贴在下面。。

<Border x:Name="leftImage"
        BorderBrush="Transparent"
        BorderThickness="0"
        HorizontalAlignment="Left"
        Height="220"
        VerticalAlignment="Top"
        Width="99">
    <Button Template="{StaticResource LeftArrow}"
            Width="20"
            Height="20"
            HorizontalAlignment="Left"
            Margin="10,0,0,0" />
</Border>
<Border x:Name="rightImage"
        BorderBrush="Transparent"
        BorderThickness="0"
        HorizontalAlignment="Right"
        Height="220"
        VerticalAlignment="Top"
        Width="99"
        Grid.Column="2">
    <Button Template="{StaticResource RightArrow}"
            Width="20"
            Height="20"
            HorizontalAlignment="Right"
            VerticalAlignment="Center"
            Margin="0,0,10,0" />
</Border>
<Button x:Name="center"
        Grid.Column="1"
        HorizontalAlignment="Center"
        Style="{StaticResource BaseButtonStyle}"
        VerticalAlignment="Top"
        Width="400"
        Height="220" />

//ShowImage is being called via DispatcherTimer every 5 seconds
private void ShowImage(int p, int b)
        {
            if (p < 0 || p > Model.HomeCarouselItems.Count - 1) return;
            var filePath = //FilePath 
            if (File.Exists(filePath) && !Utils.IsFileLocked(new FileInfo(filePath)))
            {
                BitmapImage bitmapImage = new BitmapImage();
            bitmapImage.BeginInit();
            bitmapImage.UriSource = new Uri(filePath,UriKind.Absolute);
            bitmapImage.EndInit();
            bitmapImage.Freeze();
                switch (b)
                {
                    case 1:
                        leftImage.Background = new ImageBrush() { ImageSource = bitmapImage };
                        break;
                    case 3:
                        rightImage.Background = new ImageBrush() { ImageSource = bitmapImage };
                        break;
                    case 2:
                        center.Content = new Image() { Source = bitmapImage };
                        break;
                }
            }

        }

有人能看一眼,帮我理解我在这里做错了什么吗。。

边框上的位图图像未在UI中更新

NotifyPropertyChanged()仅适用于属性。

我认为在filePath上找不到图像,这就是为什么你什么都看不到的原因。