To fix this issue FrameworkElements and their sub-classes don't just look for a resource using the controls type, they use the value of DefaultStyleKey. It's common practice for most sub-classes of Control (and some other FrameworkElements) to override the default value of this dependency property in the static constructor to be the type of the control, but sub-classes of UserControl usually don't bother.
DefaultStyleKeyProperty.OverrideMetadata(typeof(Foo), new FrameworkPropertyMetadata(typeof(Foor));
will be helpful for those in need You're missing 2 in (according to your usages of Grid.Row) You don't have to put a weight in your row/column definitions if they're all the same, and you don't even have to set Height if the value is *, since this is the default (you can remove Height="10*" from each ) Maybe you'll want to have some column definitions set with Width="Auto", but I'll leave that to you.
Angular Material form controls mat-select -- mat-option, setting the default option for updating items?