【问题标题】:Adding image in ListView Column在 ListView 列中添加图像
【发布时间】:2012-02-27 17:53:39
【问题描述】:

我在 wpf 的 ListView 中将图像添加到列时遇到问题。我有两列说 x 和 y,我想在 y 列中添加图像。我已经尝试了很多。我的 xaml 在下面---

 `<ListView Name="listView1" ItemsSource="{Binding}" DataContext="{Binding}" SelectionMode="Single">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="Directory" DisplayMemberBinding="{Binding Directory}" />
                <GridViewColumn Header="Status" DisplayMemberBinding="{Binding Status}" >                        
               </GridViewColumn>
            </GridView>
        </ListView.View>
    </ListView>
 `

下面是我的c#代码

       public class FolderPath
    {
        public string Directory { get; set; }

        public System.Drawing.Image Status { get; set; }
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {                    
 ObservableCollection<FolderPath> _FolderCollection = new ObservableCollection<FolderPath>();
 BitmapImage b = new BitmapImage();
 b.BeginInit();
 b.UriSource = new Uri(@"C:\Users\smk\Documents\Visual Studio 2010\Projects\Folder_locker\Folder_locker\folder_lock.ico");
 b.EndInit();

 System.Windows.Controls.Image i= new System.Windows.Controls.Image();
 i.Height = 20;
 i.Source = b;

 System.Drawing.Image.FromFile(@"C:\Users\smk\Documents\Visual Studio 2010\Projects\Folder_locker\Folder_locker\folder_lock.ico");


      listView1.Items.Add(new FolderPath { Directory = "something", Status = System.Drawing.Image.FromFile(@"C:\Users\smk\Documents\Visual Studio 2010\Projects\Folder_locker\Folder_locker\folder_lock.ico") });                  
    }

它在第一列中显示一些内容,但在第二列中不显示任何内容。 我已经尝试了 system.windows.controls.image 和 system.drawing.image ,但它没有显示图像。我该怎么办?

【问题讨论】:

    标签: c# .net wpf windows


    【解决方案1】:

    试试这个:

    public class FolderPath
    {
        public string Directory { get; set; }
        public string Status { get; set; }
    }
    
    <GridViewColumn Header="Status">
        <GridViewColumn.CellTemplate>
            <DataTemplate>
                <Image Source="{Binding Path=Status}"/>
            </DataTemplate>
        </GridViewColumn.CellTemplate>
    </GridViewColumn>
    
    
    private void button1_Click(object sender, RoutedEventArgs e)
    {                    
        ObservableCollection<FolderPath> _FolderCollection = new ObservableCollection<FolderPath>();
    
        listView1.Items.Add(new FolderPath { Directory = "something", Status = @"C:\Users\smk\Documents\Visual Studio 2010\Projects\Folder_locker\Folder_locker\folder_lock.ico" } )
    }
    

    【讨论】:

    • 您的第一个解决方案显示 System.windows.controls.Image 文本,而您的第二个解决方案无法编译。它不支持 内的 标签
    • @MdKamruzzamanPallob 您需要将&lt;Image&gt; 选项卡包装在&lt;GridViewTemplateColumn.CellTemplate&gt;&lt;DataTemplate&gt; 标记中。有关示例,请参见 this answer
    【解决方案2】:
    猜你喜欢
    • 2011-04-07
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    相关资源
    最近更新 更多