Bonjour
Je travaille sous WPF et je veux utiliser un TreeView pour afficher les dossiers d'une manière presque similaire à l'Explorateur Windows
J'affiche la TreeView avec les Items que je peux étendre ou non
mais j'aimerai aussi pourvoir aller directement à un noeud en utilisant du code, et je n'arrive pas à programmer cela
j'ai recherché comment faire sur le net mais les exemples fournis sont tellement complexes que je m'en sort pas
cela se passe dans la méthode : private void ExpandFolder(TreeView treeView1, string SelectedPath)
Pouvez-vous m'aider ? Merci d'avance
Je mets ci-dessous un exemple simplifié :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 Xaml : <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="400" Width="500"> <Grid> <TreeView Height="296" HorizontalAlignment="Left" Margin="12,12,0,0" Name="treeView1" VerticalAlignment="Top" Width="341" SelectedItemChanged="treeView1_SelectedItemChanged"> <TreeView.Resources> <Style TargetType="{x:Type TreeViewItem}"> <Setter Property="HeaderTemplate"> <Setter.Value> <DataTemplate> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding}" Margin="5,0" /> </StackPanel> </DataTemplate> </Setter.Value> </Setter> </Style> </TreeView.Resources> </TreeView> <Button Content="Afficher" Height="23" HorizontalAlignment="Left" Margin="368,12,0,0" Name="button1" VerticalAlignment="Top" Width="98" Click="button1_Click" /> <Button Content="Aller au noeud" Height="23" HorizontalAlignment="Left" Margin="368,64,0,0" Name="button2" VerticalAlignment="Top" Width="98" Click="button2_Click" /> <TextBox Height="23" HorizontalAlignment="Left" Margin="12,326,0,0" Name="textBox1" VerticalAlignment="Top" Width="454" /> </Grid> </Window>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106 Code : public partial class MainWindow : Window { private object dummyNode = null; public MainWindow() { InitializeComponent(); } private void treeView1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e) { string SelectedImagePath = ""; TreeView tree = (TreeView)sender; TreeViewItem temp = ((TreeViewItem)tree.SelectedItem); if (temp == null) return; string temp1 = ""; string temp2 = ""; while (true) { temp1 = temp.Header.ToString(); if (temp1.Contains(@"\")) { temp2 = ""; } SelectedImagePath = temp1 + temp2 + SelectedImagePath; if (temp.Parent.GetType().Equals(typeof(TreeView))) { break; } temp = ((TreeViewItem)temp.Parent); temp2 = @"\"; } textBox1.Text = SelectedImagePath; } private void button1_Click(object sender, RoutedEventArgs e) { treeView1.Items.Clear(); foreach (string s in Directory.GetLogicalDrives()) { TreeViewItem item = new TreeViewItem(); item.Header = s; item.Tag = s; item.FontWeight = FontWeights.Normal; item.Items.Add(dummyNode); item.Expanded += new RoutedEventHandler(folder_Expanded); treeView1.Items.Add(item); } } private void button2_Click(object sender, RoutedEventArgs e) { if (textBox1.Text != "") ExpandFolder(treeView1, textBox1.Text); } void folder_Expanded(object sender, RoutedEventArgs e) { TreeViewItem item = (TreeViewItem)sender; if (item.Items.Count == 1 && item.Items[0] == dummyNode) { item.Items.Clear(); try { foreach (string s in Directory.GetDirectories(item.Tag.ToString())) { TreeViewItem subitem = new TreeViewItem(); subitem.Header = s.Substring(s.LastIndexOf("\\") + 1); subitem.Tag = s; subitem.FontWeight = FontWeights.Normal; subitem.Items.Add(dummyNode); subitem.Expanded += new RoutedEventHandler(folder_Expanded); item.Items.Add(subitem); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } } private void ExpandFolder(TreeView treeView1, string SelectedPath) { Console.WriteLine(SelectedPath); // ??? } }
Partager