Welcome to the "hidden surprises" of WinForms :)
Your code
should be valid: it's the fact your Class subclasses List<string> is the problem. And, I have been too lazy (for years) to figure out why :)
Change your class to:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Runtime.CompilerServices;
namespace TestStruct
{
public class MyClass : INotifyPropertyChanged
{
List<string> MyStrings = new List<string>();
public event PropertyChangedEventHandler PropertyChanged;
decimal _myProperty;
public decimal myProperty
{
get { return _myProperty; }
set
{
if (PropertyChanged != null) NotifyPropertyChanged();
_myProperty = value;
}
}
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}