2015-11-02 3 views
0

У меня есть следующий код в Style для TreeViewItems в файле ресурсов:Wpf привязки изображения

<Setter Property="HeaderTemplate"> 
    <Setter.Value> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <Image Name="img" 
        Width="20" 
        Height="20" 
        Stretch="Fill" 
        Source=""/> 
       <TextBlock Text="{Binding}" Margin="5,0" /> 
      </StackPanel> 
     </DataTemplate> 
    </Setter.Value> 
</Setter> 

Как я теперь могу установить изображение/источник для TreeViewItem в коде?

+0

Это приложение MVVM? или код за окном? – StepUp

+0

Я имею в виду C# -код за приложением wpf. – MyNameIsHans

+0

Является ли изображение неизменным? Или это зависит от дерева? – Jens

ответ

0

XAML:

<Window x:Class="TreeViewWpfApplication.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <TreeView Name="treeView"> 
     </TreeView>   
    </Grid> 
</Window> 

Код позади:

public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
      CreateTree(); 
     } 

     private void CreateTree() 
     { 
      treeView.Items.Add(GetTreeView("text")); 
     } 

     private TreeViewItem GetTreeView(string text) 
     { 
      TreeViewItem newTreeViewItem = new TreeViewItem(); 

      // create stack panel 
      StackPanel stack = new StackPanel(); 
      stack.Orientation = Orientation.Horizontal; 

      // create Image 
      Image image = new Image(); 
      image.Source = new BitmapImage(new Uri(@"/Images/YourImage.png", UriKind.Relative)); 

      // Label 
      TextBlock lbl = new TextBlock(); 
      lbl.Text = text; 
      lbl.TextWrapping = TextWrapping.Wrap; 
      lbl.Width = 139; 

      // Add into stack 
      stack.Children.Add(image); 
      stack.Children.Add(lbl); 

      // assign stack to header 
      newTreeViewItem.Header = stack; 

      return newTreeViewItem; 
     } 
    } 
} 

Обратите внимание, что image.Source = new BitmapImage(new Uri(@"/Images/YourImage.png", UriKind.Relative)) где "/ Images /" - имя папки.

+0

Спасибо! Но как я могу сделать Item расширяемым? Edit: Nvm Я просто не добавил подэлемент. Спасибо за вашу помощь :) – MyNameIsHans

+0

@MyNameIsHans вы можете принять мой ответ в качестве ответа, если он вам поможет :). – StepUp

+0

Кто отказался от этого ответа? Это отлично работает для меня. – MyNameIsHans

Смежные вопросы