I'm going off of 2.7.0, so can't help with 3.0 directly, but does onValueChange take parameters? For 2.7.x, .onPress took both GameObject and bool, so I would write its lambas as:
myButton.onPress += (go, state) => { isDirty = true; };
Do parentheses make any difference (" += (x) =>" vs. " += x =>" ) ?