2010-12-01 17 views
2

は、次のようなXAMLでこれを証明する多くのサンプル、あります実行時にWPFツリービューアイテムにアイコンを追加

<TreeViewItem> 
<TreeViewItem.Header> 
<StackPanel Orientation="Horizontal"> 
<Image Source="..."/> 
<TextBlock>Hello</TextBlock> 
</StackPanel> 
</TreeViewItem.Header> 

</TreeViewItem> 

しかし、私はランタイムコードでこれを行う必要があるが - TreeViewコントロールの目的は、ファイルを表示することであり、コンピュータのフォルダ。

だから私は、コードにヘッダーで動作するかどうかはわかりません。

For Each f In directory.GetFiles() 

     Dim icon = System.Drawing.Icon.ExtractAssociatedIcon(f.FullName) 
     Dim name As String = f.Name  

     Dim item As New TreeViewItem 
     item.Header = ... 


Next 

誰もがコンセプトを実証してくださいことはできますか?

編集:私はそれを得ていると思う、私は2つの独立したコントロール - TextBlockとImageと水平StackPanelを使用する必要があります。これは正しいアプローチですか?

答えて

2

ここでは、どのように起動するかに関するサンプルコードを示します。これを最初に理解し、必要に応じて適切な変更を行います。 C#とXAMLで書かれたコード。あなたはC#を理解し、Basicに変換できることを願っています。

public class NameIconPair 
    { 
     public String Name { get; set; } 
     public BitmapSource IconSource { get; set; } 
    } 

    public partial class Window1 : Window 
    { 
     public Window1() 
     { 
      InitializeComponent(); 

      var files = System.IO.Directory.GetFiles("E:\\"); 
      ObservableCollection<NameIconPair> pairs = new ObservableCollection<NameIconPair>(); 
      foreach (string file in files) 
      { 
       System.Drawing.Icon icon = System.Drawing.Icon.ExtractAssociatedIcon(file); 
       Stream stream = new MemoryStream(); 
       icon.Save(stream); 
       BitmapDecoder decoder = IconBitmapDecoder.Create(stream, BitmapCreateOptions.None, BitmapCacheOption.None); 
       BitmapSource src = decoder.Frames[0]; 
       pairs.Add(new NameIconPair() { Name = file, IconSource = src }); 
      } 
      this.DataContext = pairs; 
     } 
    } 

そしてここでXAMLコードです:

<TreeView ItemsSource="{Binding}"> 
     <TreeView.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal"> 
        <Image Source="{Binding IconSource}"/> 
        <TextBlock Text="{Binding Name}"/> 
       </StackPanel> 
      </DataTemplate> 
     </TreeView.ItemTemplate> 
    </TreeView> 

・ホープ、このサンプルコードは大幅にあなたを助けるでしょう。 :-)

関連する問題