[WPF] ListViewItem Template 설정 시 오류

@Stupid 하시려는게 이게 맞을까요?

실행 이미지


image

XAML


이미지 파일의 빌드속성은 Resource 입니다.

이미지를 ImageBrush 리소스로 따로 만든 이유는 별 뜻이 없습니다. 소스코드가 짤릴까봐 위로 빼놓은겁니다. :smile:

그리고 Grid Background에 ImageBrush를 해주셨잖아요?

그럼 Width, Height 사이즈를 지정해주셔야 합니다. (기본이 Auto으로 설정되어있기 때문에)

<ListView ItemsSource="{Binding Files}">
    <ListView.Resources>
        <ImageBrush x:Key="img" 
                    ImageSource="/ListViewExample1;component/Images/vs.png"/>
    </ListView.Resources>
    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto"/>
                    <ColumnDefinition/>
                </Grid.ColumnDefinitions>
                <StackPanel Grid.Row="0" Grid.RowSpan="2">
                    <Grid Width="50" Height="50">
                        <Grid.Background>
                            <ImageBrush ImageSource="img"/>
                        </Grid.Background>
                    </Grid>
                </StackPanel>
                <TextBlock Text="{Binding FileName}" 
                            Grid.Row="0" 
                            Grid.Column="1" 
                            VerticalAlignment="Bottom"/>
                <TextBlock Text="{Binding FullPath}" 
                            Grid.Row="1" 
                            Grid.Column="1" 
                            VerticalAlignment="Top"/>
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

ViewModel


간단한 List 타입의 임시 데이터 Files 준비

public class MainViewModel
{
    public List<FileData> Files { get; set; }
    public string Name { get; set; } = "james";

    public MainViewModel()
    {
        List<FileData> fileDatas = new();
        fileDatas.Add(new FileData { FileName = "RefCount.txt", 
            FullPath = @"C:\Program Files (x86)\Common Files" });
        fileDatas.Add(new FileData { FileName = "Adobe Desktop Service.exe", 
            FullPath = @"C:\Program Files (x86)\Common Files" });
        Files = fileDatas;
    }
}

저도 제 깃허브 레포에 간단하게 샘플로 올려두었습니다. :smile:

https://github.com/devncore/study/tree/main/src/ListViewExample1

3개의 좋아요