Привязка объекта ImageSource напрямую к источнику изображения в XAML / WPF? - PullRequest
3 голосов
/ 15 декабря 2010

У меня есть следующий код 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 не выдает ошибок)

Ответы [ 2 ]

5 голосов
/ 15 декабря 2010

Попробуйте изменить путь Uri на ...

"../Resources/a.ico"

РЕДАКТИРОВАТЬ :

Если вы пытаетесь сослаться на изображения в другой сборке, попробуйте использовать синтаксис pack ...

pack://application:,,,/ReferencedAssembly;component/Resources/a.ico

... где ReferencedAssembly - это сборка, содержащая ваши изображения.

0 голосов
/ 15 декабря 2010

Ну, я получил причину ошибки, но до сих пор нет решения -

"Resources / a.ico" просто не найден - так что нет проблем XAML больше.

Но это то обстоятельство, что a.ico находится в другой сборке.Итак, теперь вопрос: как добраться до этой иконки?

Теперь я использовал pack://application:,,,/MyApp.ExtAssembly;/Resources/a.ico - но всегда выдает исключение, что он не был найден ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...