@@ -202,7 +202,7 @@ private void GenerateSource(
202202 sourceBuilder . AppendLine ( $ "/// Data class for <see cref=\" { enumFullName } \" />") ;
203203 sourceBuilder . AppendLine ( $ "/// </summary>") ;
204204 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 ") ;
206206 sourceBuilder . AppendLine ( "{" ) ;
207207
208208 // Generate properties
@@ -212,10 +212,23 @@ private void GenerateSource(
212212 sourceBuilder . AppendLine ( $ "{ tabString } public { enumName } Value {{ get; private init; }}") ;
213213 sourceBuilder . AppendLine ( ) ;
214214
215+ sourceBuilder . AppendLine ( $ "{ tabString } private string _display;") ;
216+ sourceBuilder . AppendLine ( ) ;
215217 sourceBuilder . AppendLine ( $ "{ tabString } /// <summary>") ;
216218 sourceBuilder . AppendLine ( $ "{ tabString } /// The display text of the enum value") ;
217219 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 } }}") ;
219232 sourceBuilder . AppendLine ( ) ;
220233
221234 sourceBuilder . AppendLine ( $ "{ tabString } /// <summary>") ;
@@ -262,6 +275,16 @@ private void GenerateSource(
262275
263276 // Generate UpdateLabels method
264277 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 } }}") ;
265288
266289 sourceBuilder . AppendLine ( $ "}}") ;
267290
0 commit comments