Столбец ListView с изображением в шаблоне данных не виден - PullRequest
0 голосов
/ 14 мая 2018

У меня есть три следующих шаблона данных:

<HierarchicalDataTemplate DataType="{x:Type models:DirOrFileItem}" ItemsSource="{Binding Children}">
    <StackPanel Orientation="Horizontal">
        <Image Source="../Images/Folder.png"  Stretch="Uniform" Height="20"></Image>
        <TextBlock Text="{Binding Name}" ToolTip="{Binding RelativePath}"></TextBlock>
    </StackPanel>
</HierarchicalDataTemplate>

<DataTemplate x:Key="SelectColTemplate">
    <CheckBox IsChecked="{Binding Path=IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}}" />
</DataTemplate>
<DataTemplate x:Key="IconTemplate">
    <Image Source="{Binding ImageData}" Stretch="Uniform" Height="20" />
</DataTemplate>

Я установил свойство ImageData для модели представления строки следующим образом:

item.ImageData = ImageHelper.LoadImage(AppConstants.FileRsourcePath);

где LoadImage:

public static BitmapImage LoadImage(string filename)
{
    return new BitmapImage(new Uri("pack://application:,,,/" + filename));
}

Я знаю, что оно загружает изображение правильно, потому что когда я проверяю свойство ImageData после его установки, оно имеет свойства, которые являются правильными для загруженного изображения.

HierarchicalDataTemplate для TreeView, а изображение folder.png выглядит так, как и где ожидается.Затем у меня есть следующие столбцы ListView:

<GridViewColumn CellTemplate="{StaticResource SelectColTemplate}" Width="30" />
<GridViewColumn CellTemplate="{StaticResource IconTemplate}" Width="30" />
<GridViewColumn DisplayMemberBinding="{Binding Name}" Header="Name" Width="360" />

Я отображаю список файлов и папок и хотел бы выделить изображение, которое есть какие.

CheckBoxпоявляется там, где и должно, в первом столбце, а третий столбец в разметке отображается как второй столбец на экране, как будто столбец с шаблоном изображения IconTemplate не существует.

Оба изображениягде они должны быть, в той же папке Images, так почему мой «столбец изображения» не отображается как второй столбец, как я ожидаю?

БОНУСНЫЙ ВОПРОС: Если как@Clemens предлагает в своем комментарии ниже, я установил Действие сборки изображений на Resource и загрузил их с помощью URI Resource File Pack, как мне это сделать в XAML?

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Пока вам не нужно уничтожать его .... вам не нужно загружать изображение, просто укажите URI в привязке ==> ImageData = new Uri ("pack: // application :,,, / "+ имя файла));и элемент управления Image загрузит его

Кстати, ваша модель представления не должна иметь элемента, связанного с графическим интерфейсом, например, растровое изображение до свидания.

0 голосов
/ 19 мая 2018

Просто установите Build Action в свойствах вашего изображения на Resource и укажите полный путь к вашему изображению. Это появится. http://prntscr.com/jjw4z3

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