我有以下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;
}
我的modelview类包含:
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不会抛出错误)
答案 0 :(得分:5)
尝试将您的Uri路径更改为...
"../Resources/a.ico"
编辑:
如果您尝试使用不同的装配体参考图像,请尝试使用pack syntax ...
pack://application:,,,/ReferencedAssembly;component/Resources/a.ico
...其中ReferencedAssembly
是包含图片的程序集。
答案 1 :(得分:0)
嗯,我得到了错误原因,但仍然没有解决方案 -
“资源/ a.ico”根本找不到 - 所以没有XAML问题了。
但是,a.ico位于其他大会中的情况就是这样。所以现在的问题是: 如何到达这个图标?
现在我使用了pack://application:,,,/MyApp.ExtAssembly;/Resources/a.ico
- 但它总是抛出一个未找到它的异常......