回答編集履歴

2

見直しキャンペーン中

2023/07/29 13:03

投稿

TN8001
TN8001

スコア9898

test CHANGED
@@ -5,6 +5,7 @@
5
5
  全部`(abab)`に変わってしまっては、訳が分からなくなると思うのですが(もちろん仮の話だということは分かっていますが、どういう意図かがさっぱりわかりません)
6
6
 
7
7
  状態がわかりやすいように`ListBox`にしていますが、`ComboBox`でも同じです。
8
+
8
9
  `INotifyPropertyChanged`に、↓を使いましたが何でもいいです。
9
10
  [NuGet Gallery | CommunityToolkit.Mvvm 7.1.2](https://www.nuget.org/packages/CommunityToolkit.Mvvm/7.1.2)
10
11
  ```xml

1

見直しキャンペーン中

2023/07/29 13:03

投稿

TN8001
TN8001

スコア9898

test CHANGED
@@ -1,199 +1,100 @@
1
1
  > c#でコンボボックスの値が変更された際に値を変更したいです。
2
-
3
-
4
2
 
5
3
  選択された`ComboList`の、`List1`を変えたいということでしょうか?
6
4
 
7
-
8
-
9
5
  全部`(abab)`に変わってしまっては、訳が分からなくなると思うのですが(もちろん仮の話だということは分かっていますが、どういう意図かがさっぱりわかりません)
10
6
 
11
-
12
-
13
7
  状態がわかりやすいように`ListBox`にしていますが、`ComboBox`でも同じです。
14
-
15
8
  `INotifyPropertyChanged`に、↓を使いましたが何でもいいです。
16
-
17
9
  [NuGet Gallery | CommunityToolkit.Mvvm 7.1.2](https://www.nuget.org/packages/CommunityToolkit.Mvvm/7.1.2)
18
-
19
- ```xaml
10
+ ```xml
20
-
21
11
  <Window
22
-
23
12
  x:Class="Questions374830.MainWindow"
24
-
25
13
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
26
-
27
14
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
28
-
29
15
  xmlns:local="clr-namespace:Questions374830"
30
-
31
16
  Width="800"
32
-
33
17
  Height="450">
34
-
35
18
  <Window.DataContext>
36
-
37
19
  <local:ViewModel />
38
-
39
20
  </Window.DataContext>
40
-
41
21
  <StackPanel>
42
-
43
22
  <!--<ComboBox
44
-
45
23
  x:Name="CbxPileNo"
46
-
47
24
  DisplayMemberPath="List1"
48
-
49
25
  ItemsSource="{Binding ComboList}"
50
-
51
26
  SelectedValue="{Binding No, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
52
-
53
27
  SelectedValuePath="List1"
54
-
55
28
  SelectionChanged="CbxPileNo_SelectionChanged" />-->
56
29
 
57
-
58
-
59
30
  <ListBox
60
-
61
31
  x:Name="CbxPileNo"
62
-
63
32
  DisplayMemberPath="List1"
64
-
65
33
  ItemsSource="{Binding ComboList}"
66
-
67
34
  SelectedValue="{Binding No, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
68
-
69
35
  SelectedValuePath="List1"
70
-
71
36
  SelectionChanged="CbxPileNo_SelectionChanged" />
72
37
 
73
-
74
-
75
38
  <TextBlock Text="{Binding SelectedValue, ElementName=CbxPileNo, StringFormat=SelectedValue: {0}}" />
76
-
77
39
  <TextBlock Text="{Binding SelectedItem, ElementName=CbxPileNo, StringFormat=SelectedItem: {0}}" />
78
-
79
40
  <TextBlock Text="{Binding No, StringFormat=No: {0}}" />
80
-
81
41
  </StackPanel>
82
-
83
42
  </Window>
84
-
85
43
  ```
86
-
87
- ```C#
44
+ ```cs
88
-
89
45
  using System.Collections.ObjectModel;
90
-
91
46
  using System.Windows;
92
-
93
47
  using System.Windows.Controls;
94
-
95
48
  using CommunityToolkit.Mvvm.ComponentModel;
96
49
 
97
-
98
-
99
50
  namespace Questions374830
100
-
101
51
  {
102
-
103
52
  public class ComboList : ObservableObject
104
-
105
53
  {
106
-
107
54
  public string List1 { get => _List1; set => SetProperty(ref _List1, value); }
108
-
109
55
  private string _List1;
110
56
 
111
-
112
-
113
57
  public override string ToString() => $"Item {{ List1 = {List1} }}";
114
-
115
58
  }
116
59
 
117
-
118
-
119
60
  public class ViewModel : ObservableObject
120
-
121
61
  {
122
-
123
62
  public ObservableCollection<ComboList> ComboList { get; } = new ObservableCollection<ComboList>();
124
63
 
125
-
126
-
127
64
  public string No { get => _No; set => SetProperty(ref _No, value); }
128
-
129
65
  private string _No;
130
-
131
-
132
-
133
66
 
134
67
 
135
68
  public ViewModel() => SetComboboxPileList();
136
69
 
137
-
138
-
139
70
  private void SetComboboxPileList()
140
-
141
71
  {
142
-
143
72
  ComboList.Add(new ComboList { List1 = "―", });
144
73
 
145
-
146
-
147
74
  for (var i = 0; i < 5; i++)
148
-
149
75
  {
150
-
151
76
  ComboList.Add(new ComboList { List1 = $"{i}", });
152
-
153
77
  }
154
-
155
78
  }
156
-
157
79
  }
158
80
 
159
-
160
-
161
81
  public partial class MainWindow : Window
162
-
163
82
  {
164
-
165
83
  public MainWindow() => InitializeComponent();
166
84
 
167
-
168
-
169
85
  private void CbxPileNo_SelectionChanged(object sender, SelectionChangedEventArgs e)
170
-
171
86
  {
172
-
173
87
  //CbxPileNo.SelectedValue = "(abab)";
174
-
175
88
  ((ComboList)CbxPileNo.SelectedItem).List1 = "(abab)";
176
-
177
89
  }
178
-
179
90
  }
180
-
181
91
  }
182
-
183
92
  ```
184
-
185
93
  `List1`を変更したときは`ListBox`の見た目は変わるが、`SelectedValue`やそのバインド先は変わらない(変えたのは`List1`であって、`ComboList`ではないため)
186
-
187
94
  再選択したときには変わっている(うまく説明できないので動かしてみてください)
188
-
189
95
  ![アプリ画像](2758bbcd6c03895fe11ac72908ba24a8.png)
190
-
191
-
192
96
 
193
97
  ---
194
98
 
195
-
196
-
197
99
  `ComboList`のコレクションも`ComboList`は非常に違和感があります(`List<ComboItem> ComboList`とかなら納得できます)
198
-
199
- さらに中に`List1`がありますが、おそらく仮名でしょうから置いておきます(もし実際目にしたら「どんだけリストだよっ」と突っ込むと思いますw
100
+ さらに中に`List1`がありますが、おそらく仮名でしょうから置いておきます(もし実際目にしたら「どんだけリストだよっ」と突っ込むと思いますw