回答編集履歴

1

バインドでの例 追記

2024/10/11 10:52

投稿

TN8001
TN8001

スコア9813

test CHANGED
@@ -73,3 +73,75 @@
73
73
  }
74
74
  }
75
75
  ```
76
+
77
+ ---
78
+
79
+ >> のコードでは、やはり中でWPFのコントロールに触れなければならず、
80
+ > さらに子ノードを追加しているとかですかね?
81
+
82
+ `ThemeMode`の確認がてらバインドでの例
83
+ ```xml
84
+ <Window
85
+ x:Class="Qrub8esahzjqmu3.MainWindow"
86
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
87
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
88
+ xmlns:local="clr-namespace:Qrub8esahzjqmu3"
89
+ Width="800"
90
+ Height="450"
91
+ Loaded="Window_Loaded">
92
+ <Grid>
93
+ <TreeView x:Name="treeView">
94
+ <TreeView.ItemTemplate>
95
+ <HierarchicalDataTemplate DataType="local:Node" ItemsSource="{Binding Children}">
96
+ <TextBlock Text="{Binding Name}" />
97
+ </HierarchicalDataTemplate>
98
+ </TreeView.ItemTemplate>
99
+ </TreeView>
100
+ </Grid>
101
+ </Window>
102
+ ```
103
+ ```cs
104
+ using System.Collections.ObjectModel;
105
+ using System.Windows;
106
+
107
+ namespace Qrub8esahzjqmu3;
108
+
109
+ public partial class MainWindow : Window
110
+ {
111
+ public MainWindow()
112
+ {
113
+ InitializeComponent();
114
+
115
+ #pragma warning disable WPF0001 // 種類は、評価の目的でのみ提供されています。将来の更新で変更または削除されることがあります。続行するには、この診断を非表示にします。
116
+ Application.Current.ThemeMode = ThemeMode.Dark;
117
+ }
118
+
119
+ private async void Window_Loaded(object sender, RoutedEventArgs e)
120
+ {
121
+ treeView.ItemsSource = await Task.Run(() =>
122
+ {
123
+ var root = new Node();
124
+ Add(root, 10, "Node");
125
+ return root.Children;
126
+ });
127
+
128
+ static Node Add(Node node, int c, string name)
129
+ {
130
+ for (var i = 1; i <= c; i++)
131
+ {
132
+ var n = new Node() { Name = $"{name}-{i}", };
133
+ Add(n, c - 1, n.Name);
134
+ node.Children.Add(n);
135
+ }
136
+ return node;
137
+ }
138
+ }
139
+ }
140
+
141
+ public class Node
142
+ {
143
+ public string? Name { get; set; }
144
+ public ObservableCollection<Node> Children { get; } = [];
145
+ }
146
+ ```
147
+ ![アプリ動画](https://ddjkaamml8q8x.cloudfront.net/questions/2024-10-11/05bae2d7-642e-40bd-9c31-0d3c8ff9d92b.gif)