@@ -202,7 +202,7 @@ private void GenerateSource(
202
202
sourceBuilder . AppendLine ( $ "/// Data class for <see cref=\" { enumFullName } \" />") ;
203
203
sourceBuilder . AppendLine ( $ "/// </summary>") ;
204
204
sourceBuilder . AppendLine ( $ "[System.CodeDom.Compiler.GeneratedCode(\" { nameof ( EnumSourceGenerator ) } \" , \" { PackageVersion } \" )]") ;
205
- sourceBuilder . AppendLine ( $ "public class { enumDataClassName } ") ;
205
+ sourceBuilder . AppendLine ( $ "public class { enumDataClassName } : global::System.ComponentModel.INotifyPropertyChanged ") ;
206
206
sourceBuilder . AppendLine ( "{" ) ;
207
207
208
208
// Generate properties
@@ -212,10 +212,23 @@ private void GenerateSource(
212
212
sourceBuilder . AppendLine ( $ "{ tabString } public { enumName } Value {{ get; private init; }}") ;
213
213
sourceBuilder . AppendLine ( ) ;
214
214
215
+ sourceBuilder . AppendLine ( $ "{ tabString } private string _display;") ;
216
+ sourceBuilder . AppendLine ( ) ;
215
217
sourceBuilder . AppendLine ( $ "{ tabString } /// <summary>") ;
216
218
sourceBuilder . AppendLine ( $ "{ tabString } /// The display text of the enum value") ;
217
219
sourceBuilder . AppendLine ( $ "{ tabString } /// </summary>") ;
218
- sourceBuilder . AppendLine ( $ "{ tabString } public string Display {{ get; set; }}") ;
220
+ sourceBuilder . AppendLine ( $ "{ tabString } public string Display") ;
221
+ sourceBuilder . AppendLine ( $ "{ tabString } {{") ;
222
+ sourceBuilder . AppendLine ( $ "{ tabString } { tabString } get => _display;") ;
223
+ sourceBuilder . AppendLine ( $ "{ tabString } { tabString } set") ;
224
+ sourceBuilder . AppendLine ( $ "{ tabString } { tabString } {{") ;
225
+ sourceBuilder . AppendLine ( $ "{ tabString } { tabString } { tabString } if (_display != value)") ;
226
+ sourceBuilder . AppendLine ( $ "{ tabString } { tabString } { tabString } {{") ;
227
+ sourceBuilder . AppendLine ( $ "{ tabString } { tabString } { tabString } { tabString } _display = value;") ;
228
+ sourceBuilder . AppendLine ( $ "{ tabString } { tabString } { tabString } { tabString } OnPropertyChanged(nameof(Display));") ;
229
+ sourceBuilder . AppendLine ( $ "{ tabString } { tabString } { tabString } }}") ;
230
+ sourceBuilder . AppendLine ( $ "{ tabString } { tabString } }}") ;
231
+ sourceBuilder . AppendLine ( $ "{ tabString } }}") ;
219
232
sourceBuilder . AppendLine ( ) ;
220
233
221
234
sourceBuilder . AppendLine ( $ "{ tabString } /// <summary>") ;
@@ -262,6 +275,16 @@ private void GenerateSource(
262
275
263
276
// Generate UpdateLabels method
264
277
GenerateUpdateLabelsMethod ( sourceBuilder , getTranslation , enumDataClassName , tabString ) ;
278
+ sourceBuilder . AppendLine ( ) ;
279
+
280
+ // Generate INotifyPropertyChanged implementation
281
+ sourceBuilder . AppendLine ( $ "{ tabString } /// <inheritdoc />") ;
282
+ sourceBuilder . AppendLine ( $ "{ tabString } public event global::System.ComponentModel.PropertyChangedEventHandler? PropertyChanged;") ;
283
+ sourceBuilder . AppendLine ( ) ;
284
+ sourceBuilder . AppendLine ( $ "{ tabString } protected void OnPropertyChanged([global::System.Runtime.CompilerServices.CallerMemberName] string? propertyName = null)") ;
285
+ sourceBuilder . AppendLine ( $ "{ tabString } {{") ;
286
+ sourceBuilder . AppendLine ( $ "{ tabString } { tabString } PropertyChanged?.Invoke(this, new global::System.ComponentModel.PropertyChangedEventArgs(propertyName));") ;
287
+ sourceBuilder . AppendLine ( $ "{ tabString } }}") ;
265
288
266
289
sourceBuilder . AppendLine ( $ "}}") ;
267
290
0 commit comments