回答編集履歴

5

見直しキャンペーン中

2023/07/30 06:11

投稿

TN8001
TN8001

スコア9326

test CHANGED
@@ -22,7 +22,7 @@
22
22
  そういう場合は「マスター詳細パターン」です。
23
23
  [方法: 階層データでマスター詳細パターンを使用する - WPF .NET Framework | Microsoft Docs](https://docs.microsoft.com/ja-jp/dotnet/desktop/wpf/data/how-to-use-the-master-detail-pattern-with-hierarchical-data)
24
24
 
25
- ```xaml
25
+ ```xml
26
26
  <Window
27
27
  x:Class="Qmpalyja24rzx8z.MainWindow"
28
28
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
@@ -86,7 +86,7 @@
86
86
  </Window>
87
87
  ```
88
88
 
89
- ```C#
89
+ ```cs
90
90
  using System.Collections.Generic;
91
91
  using System.Linq;
92
92
  using System.Windows;

4

どうやらそういう意味だったようなのでキレイにする

2022/04/11 15:40

投稿

TN8001
TN8001

スコア9326

test CHANGED
@@ -64,11 +64,10 @@
64
64
  <ListBox x:Name="listBox2" DisplayMemberPath="p_name" />
65
65
  </GroupBox>
66
66
 
67
- <GroupBox Header="それともこういう意味?">
67
+ <GroupBox Header="マスター詳細">
68
68
  <Grid>
69
69
  <Grid.RowDefinitions>
70
70
  <RowDefinition />
71
- <RowDefinition Height="Auto" />
72
71
  <RowDefinition />
73
72
  </Grid.RowDefinitions>
74
73
  <GroupBox Header="MUData一覧">
@@ -77,11 +76,7 @@
77
76
  IsSynchronizedWithCurrentItem="true"
78
77
  ItemsSource="{Binding}" />
79
78
  </GroupBox>
80
- <TextBlock
81
- Grid.Row="1"
82
- Text="↑で選択したMUDataのManagerが↓に出る"
83
- TextWrapping="Wrap" />
84
- <GroupBox Grid.Row="2" Header="Manager一覧">
79
+ <GroupBox Grid.Row="1" Header="Manager一覧">
85
80
  <ListBox DisplayMemberPath="p_name" ItemsSource="{Binding /manager_list}" />
86
81
  </GroupBox>
87
82
  </Grid>
@@ -170,4 +165,4 @@
170
165
  }
171
166
  }
172
167
  ```
173
- ![アプリ画像](https://ddjkaamml8q8x.cloudfront.net/questions/2022-04-11/0eaa7b30-dcef-4edf-9129-7ff53dc373d3.png)
168
+ ![アプリ画像](https://ddjkaamml8q8x.cloudfront.net/questions/2022-04-12/1992de86-8420-4412-8d68-2339f94003ca.png)

3

リストの配列

2022/04/11 09:20

投稿

TN8001
TN8001

スコア9326

test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  > その配下の配列データを同様に表示しようとすると上記のような状態になります。
6
6
 
7
- `p_name`は配列のリストになっていますが、どう表示したいんでしょうか?
7
+ `p_name`はリストの配列(配列中にあるリストの中あるオブジェクトの文字列プロパティ)ですが、どう表示したいんでしょうか?
8
8
 
9
9
  * `TreeView`に表示する
10
10
  階層データですから`TreeView`のほうが向いているような?

2

`ListBox`が2つある

2022/04/11 08:55

投稿

TN8001
TN8001

スコア9326

test CHANGED
@@ -18,7 +18,7 @@
18
18
  `MUData`はどうでもよくて、`p_name`だけ一覧できればいい場合。
19
19
  [C# SelectMany - Google 検索](https://www.google.co.jp/search?q=C%23+SelectMany)
20
20
 
21
- * もしかして`ListBox`が2つある?(だとしたらだいぶ説明不足ですが^^;
21
+ * `ListBox`が2つある
22
22
  そういう場合は「マスター詳細パターン」です。
23
23
  [方法: 階層データでマスター詳細パターンを使用する - WPF .NET Framework | Microsoft Docs](https://docs.microsoft.com/ja-jp/dotnet/desktop/wpf/data/how-to-use-the-master-detail-pattern-with-hierarchical-data)
24
24
 

1

もしかして`ListBox`が2つある?

2022/04/11 08:46

投稿

TN8001
TN8001

スコア9326

test CHANGED
@@ -8,11 +8,19 @@
8
8
 
9
9
  * `TreeView`に表示する
10
10
  階層データですから`TreeView`のほうが向いているような?
11
+ [HierarchicalDataTemplate クラス (System.Windows) | Microsoft Docs](https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.hierarchicaldatatemplate)
12
+
11
13
  * `MUData`でグループ化して`ListBox`に表示
12
14
  これもありですね。
15
+ [方法: XAML でビューを使用してデータの並べ替えおよびグループ化を行う - WPF .NET Framework | Microsoft Docs](https://docs.microsoft.com/ja-jp/dotnet/desktop/wpf/data/how-to-sort-and-group-data-using-a-view-in-xaml)
16
+
13
17
  * すべての`Manager`をフラット化
14
18
  `MUData`はどうでもよくて、`p_name`だけ一覧できればいい場合。
19
+ [C# SelectMany - Google 検索](https://www.google.co.jp/search?q=C%23+SelectMany)
15
20
 
21
+ * もしかして`ListBox`が2つある?(だとしたらだいぶ説明不足ですが^^;
22
+ そういう場合は「マスター詳細パターン」です。
23
+ [方法: 階層データでマスター詳細パターンを使用する - WPF .NET Framework | Microsoft Docs](https://docs.microsoft.com/ja-jp/dotnet/desktop/wpf/data/how-to-use-the-master-detail-pattern-with-hierarchical-data)
16
24
 
17
25
  ```xaml
18
26
  <Window
@@ -27,7 +35,7 @@
27
35
  Click="OpenButton_Click"
28
36
  Content="読み込み"
29
37
  DockPanel.Dock="Top" />
30
- <UniformGrid Columns="3">
38
+ <UniformGrid Columns="4">
31
39
 
32
40
  <GroupBox Header="TreeView">
33
41
  <TreeView x:Name="treeView">
@@ -54,6 +62,29 @@
54
62
 
55
63
  <GroupBox Header="フラット化">
56
64
  <ListBox x:Name="listBox2" DisplayMemberPath="p_name" />
65
+ </GroupBox>
66
+
67
+ <GroupBox Header="それともこういう意味?">
68
+ <Grid>
69
+ <Grid.RowDefinitions>
70
+ <RowDefinition />
71
+ <RowDefinition Height="Auto" />
72
+ <RowDefinition />
73
+ </Grid.RowDefinitions>
74
+ <GroupBox Header="MUData一覧">
75
+ <ListBox
76
+ DisplayMemberPath="name"
77
+ IsSynchronizedWithCurrentItem="true"
78
+ ItemsSource="{Binding}" />
79
+ </GroupBox>
80
+ <TextBlock
81
+ Grid.Row="1"
82
+ Text="↑で選択したMUDataのManagerが↓に出る"
83
+ TextWrapping="Wrap" />
84
+ <GroupBox Grid.Row="2" Header="Manager一覧">
85
+ <ListBox DisplayMemberPath="p_name" ItemsSource="{Binding /manager_list}" />
86
+ </GroupBox>
87
+ </Grid>
57
88
  </GroupBox>
58
89
  </UniformGrid>
59
90
  </DockPanel>
@@ -118,7 +149,7 @@
118
149
  treeView.ItemsSource = data;
119
150
 
120
151
  // グループ化する場合はCollectionViewSource
121
- var cvs = new CollectionViewSource()
152
+ var cvs = new CollectionViewSource
122
153
  {
123
154
  // フラット化しつつグループ名(name)も入れる。面倒なので匿名クラス
124
155
  Source = data.SelectMany(x => x.manager_list.Select(y => new
@@ -132,8 +163,11 @@
132
163
 
133
164
  // フラット化するならSelectManyするだけ
134
165
  listBox2.ItemsSource = data.SelectMany(x => x.manager_list);
166
+
167
+ // マスター詳細パターン
168
+ DataContext = data;
135
169
  }
136
170
  }
137
171
  }
138
172
  ```
139
- ![アプリ画像](https://ddjkaamml8q8x.cloudfront.net/questions/2022-04-10/4ba65d88-e8d7-4f5c-91a6-4a538fc515d7.png)
173
+ ![アプリ画像](https://ddjkaamml8q8x.cloudfront.net/questions/2022-04-11/0eaa7b30-dcef-4edf-9129-7ff53dc373d3.png)