Estoy intentando cambiar el icono de mi TreeView en un icono de carpeta. También cuando se colapsa necesita tener un ícono de carpeta abierta.¿Cómo puedo cambiar el icono TreeView en un icono de carpeta?
Mi vista de árbol ha DataBound artículos en ella y el código es:
<TreeView x:Name="TreeViewCategories" Grid.Row="0" Grid.Column="1" Height="610" HorizontalAlignment="Left" Margin="29,111,0,0" VerticalAlignment="Top" Width="315" BorderThickness="0" Background="Transparent" >
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Items}">
<TextBlock FontSize="20" Text="{Binding Name}" PreviewMouseDown="TextBlock_PreviewMouseDown"/>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
También Éste es cómo llenar la vista de árbol con elementos de XML (es un cortado con tijeras de una gran cantidad de código:
private void LoadHospitalXML()
{
try
{
FileStream fs = new FileStream("ConfigOrgHospital.xml", FileMode.Open, FileAccess.Read);
var xml = XmlReader.Create(fs);
rootElement = ConvertHospitalData(xml);
this.TreeViewCategories.ItemsSource = null;
List<HospitalWrapper> li = new List<HospitalWrapper>();
var hosp = rootElement.Items.FirstOrDefault();
if (hosp != null)
{
foreach (var i in hosp.Hospital)
{
li.AddIfNotNull(CreateHospList(i));
}
}
this.TreeViewCategories.ItemsSource = li;
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
private HospitalWrapper CreateHospList(object obj)
{
var newItem = new HospitalWrapper();
newItem.Context = obj;
//Hospital Names//
if (obj is HospitalDataHospitalsHospital)
{
var hosp = (HospitalDataHospitalsHospital)obj;
//newItem.Title = "Hospitals";
newItem.Name = hosp.DefaultName;
var tmp = new HospitalWrapper();
tmp.Name = "Sites";
tmp.IsTitle = true;
if (hosp.Sites != null)
foreach (var i in hosp.Sites)
{
tmp.Items.AddIfNotNull(CreateHospList(i));
}
newItem.Items.Add(tmp);
tmp = new HospitalWrapper();
tmp.Name = "Specialties";
tmp.IsTitle = true;
if (hosp.Deps != null)
foreach (var j in hosp.Deps)
{
tmp.Items.AddIfNotNull(CreateHospList(j));
}
newItem.Items.Add(tmp);
}
}