Записал на слух партитуру темы "Морская битва" из этой игры. Кому интересно, можете оценить и прослушать: https://musescore.com/user/49576355/scores/10766176
Несколько месяцев в начале прошлого года занимался задачей отображения большого количества окон с валидацией. Тогда я также реализовывал валидаторы в своих задачах. Интересно то, что мой подход был очень схож с вашим. Я тоже использовал FluentValidation и ReactiveUI. Правда сил выложить свой код в OpenSource и оформить как следует не хватило. Так что вы выполнили очень полезную работу. Вы молодец!
Я во время код-ревью также прошу выносить составные выражения из блока if в переменную и давать ей чёткое и ясное имя. Всегда говорю своим коллегам, что код должен читаться, как книжка.
Записал на слух партитуру темы "Морская битва" из этой игры. Кому интересно, можете оценить и прослушать: https://musescore.com/user/49576355/scores/10766176
Есть свойство ItemsControl.ItemContainerStyle