回答編集履歴

2

見直しキャンペーン中

2023/08/12 09:49

投稿

TN8001
TN8001

スコア9357

test CHANGED
@@ -1,6 +1,6 @@
1
1
  > this.Controls["label1"].Text = "HIRO";
2
2
 
3
- この書き方は`Windows Forms`のものですので`WPF`では使えません。
3
+ この書き方はWindows FormsのものですのでWPFでは使えません。
4
4
 
5
5
  例えばこんな感じで`MyGrid`の**子**であれば、まとめて切り替えられます。
6
6
  ```cs

1

見直しキャンペーン中

2023/07/23 06:01

投稿

TN8001
TN8001

スコア9357

test CHANGED
@@ -1,109 +1,55 @@
1
1
  > this.Controls["label1"].Text = "HIRO";
2
-
3
-
4
2
 
5
3
  この書き方は`Windows Forms`のものですので`WPF`では使えません。
6
4
 
7
-
8
-
9
- 例えばこんな感じで`MyGrid`の子であればまとめて切り替えられます。
5
+ 例えばこんな感じで`MyGrid`の****であればまとめて切り替えられます。
10
-
11
- ```C#
6
+ ```cs
12
-
13
7
  using System.Linq;
14
-
15
8
  using System.Windows;
16
-
17
9
  using System.Windows.Controls;
18
10
 
19
-
20
-
21
11
  namespace Questions292270
22
-
23
12
  {
24
-
25
13
  public partial class MainWindow : Window
26
-
27
14
  {
28
-
29
15
  public MainWindow()
30
-
31
16
  {
32
-
33
17
  InitializeComponent();
34
-
35
18
  }
36
19
 
37
-
38
-
39
20
  private void Button_Click(object sender, RoutedEventArgs e)
40
-
41
21
  {
42
-
43
22
  ToggleImage(Image1);
44
-
45
23
  }
46
24
 
47
-
48
-
49
25
  private void Button_Click2(object sender, RoutedEventArgs e)
50
-
51
26
  {
52
-
53
27
  ToggleImage(Image2);
54
-
55
28
  }
56
29
 
57
-
58
-
59
30
  private void ToggleImage(Image image)
60
-
61
31
  {
62
-
63
32
  // MyGridの子のうちImageだけを列挙
64
-
65
33
  foreach(Image i in MyGrid.Children.OfType<Image>())
66
-
67
34
  {
68
-
69
35
  // Nameで比較してもいいのですが打ち間違えたりするので、直接比較したほうがミスがない
70
-
71
36
  if(image == i)
72
-
73
37
  {
74
-
75
38
  i.Visibility = Visibility.Visible;
76
-
77
39
  }
78
-
79
40
  else
80
-
81
41
  {
82
-
83
42
  i.Visibility = Visibility.Hidden;
84
-
85
43
  }
86
-
87
44
  }
88
-
89
45
  }
90
-
91
46
  }
92
-
93
47
  }
94
-
95
48
  ```
96
49
 
97
-
98
-
99
- 「`Window`のすべての`Image`を列挙したい」ような場合は
50
+ 「`Window`のすべての`Image`を列挙したい」ような場合は、`VisualTreeHelper`を使います。
100
-
101
51
  [VisualTreeHelper クラス (System.Windows.Media) | Microsoft Docs](https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.media.visualtreehelper)
102
-
103
- を使います。
104
52
 
105
53
  参考 [VisualTreeの子孫要素を取得する - xin9le.net](https://blog.xin9le.net/entry/2013/10/29/222336)
106
54
 
107
-
108
-
109
55
  ほかにもいろいろ方法はありそうですが、もう少し具体的な例でないと何とも言えませんね^^;