绑定图像不出现在设计时间

时间:2018-05-07 08:17:31

标签: c# wpf visual-studio xaml visual-studio-2017

我在WPF控件中使用的示例图像用于测试目的。

图片路径为<project_dir>/Assets/Samples/dog.jpg

当我在source属性中输入图像路径时,它的工作没有任何问题(在设计和运行时):

<Image Source="/Assets/Samples/dog.jpg" Stretch="UniformToFill" />

但是,当我将图像路径移动到我的ViewModel中时,它仅在运行时出于某种原因才有效。

public string Image { get; set; }

public MyControlViewModel() {
     Image = "/Assets/Samples/dog.jpg";
}

<Image Source="{Binding Image}" Stretch="UniformToFill" />

我确实将图片构建操作更改为Resource,但没有任何结果。

还尝试使用资源URI路径(pack://application:,,,/Assets/Samples/dog.jpg) - 没有任何结果。

  • 这是预期的行为吗?
  • 为什么会发生这种情况,我怎样才能让它在设计时间内发挥作用?

1 个答案:

答案 0 :(得分:0)

在设计时,您是否将ViewModel(显式)绑定到View的DataContext?

  • 如果是,那么Designer应该显示它。如果不是,请重建整个项目/解决方案。

  • 如果没有,那么很有可能它在设计时不会出现,因为DataContext是未知的。其中一个解决方案是为了设计而绑定它:

例如:

xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"  
xmlns:vm="clr-namespace:MyApp.ViewModels"    
mc:Ignorable="d"
d:DataContext="{d:DesignInstance {x:Type vm:MyControlViewModel},IsDesignTimeCreatable=True}"