我想在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属性绑定到什么类型的“属性”,这是使用字符串的最佳方法吗? 什么是使用存储在项目中的图像的最佳方式?
答案 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;
}