我有一个XAML格式的ListView
和一个保存本地嵌入图像路径的List<string>
。我无法在List中显示图像。顺便说一下,我可以通过<Image Source="{local:ImageResource TypingApplication.Images.Icons.Search.png}" />
但是我不能在ListView
中显示图像。
<ListView x:Name="ListView"
ItemsSource="{Binding ListItems}"
IsEnabled="True"
IsVisible="True"
RowHeight="40"
Opacity="0.9">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Image Source="{local:ImageResource TypingApplication.Images.Icons.{Binding .}}"/>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我已经在Extensions
文件夹中添加了ImageResourceExtension
,在XAML中添加了xmlns:local="clr-namespace:TypingApplication.Extensions"
,正如我提到的,我可以显示单幅图像,只是ListView
有问题。
下面是我的C#代码,其中包含List和Constructor
public List<string> ListItems
{
get
{
return new List<string>()
{
"Home.png",
"Favorite.png",
"Search.png"
};
}
}
public HomePage()
{
InitializeComponent();
this.BindingContext = this;
}
请注意,我在项目中使用共享图像。我已将SolutionExplorer
中所有图像的属性设置为Embedded resource
。
2条答案
按热度按时间yqhsw0fo1#
ObservableCollection
IValueConverter
实作,将您的系结转换成所需的值EmbeddedResource
XAML语言
In the listview add binding w.r.to converter resource we just created.
2o7dmzc52#
如果你想在listview中添加Embedded图片,根据json的回复,你的绑定有一些问题,你可以使用IValueConverter将图片路径转换为正确。
我根据你的代码做了一个示例,你可以看一看:
图像转换器:
您可以根据自己的代码将demo3更改为TypingApplication。
作为Prateek的答复,我建议您可以将List〈〉更改为Observablecollection〈〉,因为它实现了INotifyPropertyChanged接口,通知数据更改。
https://learn.microsoft.com/en-us/dotnet/api/system.collections.objectmodel.observablecollection-1?view=netframework-4.8