簡體   English   中英

WPF 綁定圖像不起作用

[英]WPF binding image not working

我正在嘗試在網格上設置圖像。 我用了兩種方法來做到這一點:

1)使用圖像源:

<Image Source="{Binding MonitoringVM.ImgPath}" 
            Width="1600" Height="1600"  />

當我這樣做時,圖像就會顯示出來。 但它只有在寬度/高度為 500 時才有效。當我設置為 2000 時,我只能看到圖像的一小部分。 我希望它放大圖像並只顯示與包含圖像組件的網格大小相對應的部分,但是它不起作用。

2)對於這種方法,我覆蓋了畫布:

 public class ImageCanvas : Canvas
    {
        public ImageSource CanvasImageSource
        {
            get { return (ImageSource)GetValue(CanvasImageSourceProperty); }
            set { SetValue(CanvasImageSourceProperty, value); }
        }

        public static readonly DependencyProperty CanvasImageSourceProperty =
            DependencyProperty.Register("CanvasImageSource", typeof(ImageSource),
            typeof(ImageCanvas), new FrameworkPropertyMetadata(default(ImageSource)));

        protected override void OnRender(System.Windows.Media.DrawingContext dc)
        {
            dc.DrawImage(CanvasImageSource, new Rect(this.RenderSize));
            base.OnRender(dc);
        }
    }

但只有當我靜態指定路徑時,我才能正常工作(包括大小操作):

<helper:ImageCanvas CanvasImageSource="/Images/img1.png" 
                            Width="500" Height="500"  >
</helper:ImageCanvas>

如果我用綁定替換路徑,它根本不會顯示任何內容:

<helper:ImageCanvas CanvasImageSource="{Binding MonitoringVM.ImgPath}" 
                            Width="500" Height="500"  >
</helper:ImageCanvas>

ViewModel 是: ImgPath = @"/Images/img1.jpg";

您的ImageCanvas是多余的,因為它的行為類似於將Stretch設置為FillImage控件。

所以就這樣寫:

<Image Source="{Binding MonitoringVM.ImgPath}" Stretch="Fill" Width="500" Height="500" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM