То, что вы пытаетесь сделать, на самом деле не имеет смысла ... элементы управления не DTO, они сильно зависят от среды выполнения. В WPF также существует проблема диспетчера: даже если бы вы могли передать элемент управления, как бы вы снова подключили его к диспетчеру приложений? В любом случае элементы управления WPF не сериализуются с DataContractSerializer
, и изменить это невозможно.
Однако вы можете передать представление представлений в XAML. Это, конечно, предполагает, что ваши представления только XAML, без какого-либо кода. Затем вы можете загрузить представления, используя XamlReader
, и отобразить их в вашем пользовательском интерфейсе. Я не уверен в целесообразности, но думаю, что это ваш лучший вариант.
Вы также можете реализовать свои представления в отдельной сборке, чтобы пользователям не нужно было переустанавливать все приложение. Им нужно будет только обновить измененные сборки.