【发布时间】:2010-12-15 16:02:03
【问题描述】:
我有以下 XAML 代码:
<ListBox ItemsSource="{Binding Languages}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<Image Source="{Binding LanguageIcon}" />
<Label Content="{Binding LanguageName}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
在模型类中:
class Language {
public string LanguageName;
public ImageSource LanguageIcon;
}
我的模型视图类包含:
public List<Language> Languages;
里面填满了:
Languages.Add(new Language("A",new BitmapImage(new Uri("Resources/a.ico",
UriKind.Relative))));
Languages.Add(new Language("B",new BitmapImage(new Uri("Resources/b.ico",
UriKind.Relative))));
当我运行项目时,我的所有语言名称都显示在列表中,但图标不显示...为什么会发生这种情况,如何确保显示我的图标? (我确信资源确实存在,因为 BitmapImages 不会抛出错误)
【问题讨论】:
-
我认为您应该重新考虑您的概念并使用枚举作为语言。在 xaml 中,您可以使用 valueconverters 将枚举转换为语言名称和图标。
-
您遇到的问题是对象上的 Image.Source 是 ImageSource 对象,但是当它通过 Xaml 公开时,它是 Uri 的字符串。 msdn.microsoft.com/en-us/library/…
标签: wpf mvvm binding imagesource