2012-02-27 28 views
1

我在将图像添加到wpf中ListView中的列时遇到了问题。我有两列说x和y,我想在y列中添加一个图像。我尝试了很多。我的XAML低于---在ListView列中添加图像

`<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") });     
    } 

它显示东西先列,但没有显示第2列。 我已经尝试system.windows.controls.image和system.drawing.image两个,但它不显示图像。我能做什么?

回答

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" }) 
} 
+0

您的第一个解决方案显示System.windows.controls.Image文本,而您的第二个解决方案不能编译。您不需要在 2012-02-27 19:01:44

+0

@MdKamruzzamanPallob中支持标记您需要将''选项卡封装到''和''标记中。有关示例,请参阅[此答案](http://stackoverflow.com/a/4725474/302677)。 – Rachel 2012-02-27 19:23:47

+0

对不起。我编写它没有我的编译器。 – MyKuLLSKI 2012-02-27 20:16:56