在xaml中使用Image标签具有什么类型的属性

时间:2015-11-18 17:38:13

标签: c# wpf image

我想在xaml中使用带有<Image></Image>标记的图像(在ListBox内部)。

<Image  Source="{Binding ClassImage}"
        Width="64" Height="64"
        HorizontalAlignment="Left" VerticalAlignment="Top"
        Stretch="Fill"
        Margin="0,0,0,10"
        RenderOptions.BitmapScalingMode="Fant"/>

在ViewModel中使用此构造函数。

public ChooseNewClassViewModel()
{
   ListOfModels = new ObservableCollection<Model>();
   foreach (var model in ListOfModels)
   {
       Model.ClassImage = AppDomain.CurrentDomain.BaseDirectory +     @"Common\Assets\Images\Image\" + PlayerClass.Name + ".png";
   }
}

这是Model属性

public string ClassImage
{
     get { return _classImage; }
     set
     {
         _classImage = value;
         OnPropertyChanged(nameof(ClassImage));
     }
}

现在,ClassImage属性只是一个字符串属性(我读到它应该工作的地方)但图像没有显示,但我在ListOfModels视图中使用的其余数据有效很好,我可以在列表视图中看到三个对象(空)。 我的Image文件夹中的图像属于Resource类型,如果更新则是复制。

我的问题是,我想,最好的方法是将Image.Source属性绑定到什么类型的“属性”,这是使用字符串的最佳方法吗? 什么是使用存储在项目中的图像的最佳方式?

2 个答案:

答案 0 :(得分:0)

你的ChooseNewClassViewModel方法(构造函数?)没有做任何事情,因为它首先创建一个模型列表,然后立即迭代集合,但集合是空的,因为它没有被填充。

也许您希望ClassImage属性看起来像这样:

public string ClassImage
{
    get { return AppDomain.CurrentDomain.BaseDirectory...; }
}

答案 1 :(得分:0)

问题是我的xaml无法找到与我的模型的绑定。 我修复它的快捷方式就是我在我的viewmodel中创建了一个新的字符串prop,将xaml绑定到那个而不是用它来显示图像。

 public string ClassImage
        {
            get { return _classImage; }
            set
            {
                _classImage = value;
                OnPropertyChanged(nameof(ClassImage));

            }
        }

 foreach (var PlayerClass in ListOfPlayerClasses)
            {

                ClassImage = @"/path/folders/" + PlayerClass.Name + ".png";
                PlayerClass.ClassImage = ClassImage;
            }