A B*_*the 3 wpf binding mvvm imagesource
我有以下XAML代码:
<ListBox ItemsSource="{Binding Languages}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<Image Source="{Binding LanguageIcon}" />
<Label Content="{Binding LanguageName}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Run Code Online (Sandbox Code Playgroud)
并在模型类中:
class Language {
public string LanguageName;
public ImageSource LanguageIcon;
}
Run Code Online (Sandbox Code Playgroud)
我的modelview类包含:
public List<Language> Languages;
Run Code Online (Sandbox Code Playgroud)
充满了:
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))));
Run Code Online (Sandbox Code Playgroud)
当我运行项目时,我的所有语言名称都显示在列表中,但不显示图标...为什么会发生这种情况,如何确保显示我的图标?(我确信资源确实存在,因为BitmapImages不会抛出错误)
尝试将您的Uri路径更改为...
"../Resources/a.ico"
Run Code Online (Sandbox Code Playgroud)
编辑:
如果您尝试在不同的程序集中引用图像,请尝试使用包语法 ...
pack://application:,,,/ReferencedAssembly;component/Resources/a.ico
Run Code Online (Sandbox Code Playgroud)
... ReferencedAssembly包含图像的程序集在哪里.