将ImageSource对象直接绑定到XAML / WPF中的Image源?

时间:2010-12-15 16:02:04

标签: wpf mvvm binding imagesource

我有以下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不会抛出错误)

2 个答案:

答案 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 - 但它总是抛出一个未找到它的异常......