Я хотел бы добавить еще один вклад, который, на мой взгляд, может быть полезен для других, сталкивающихся с моей такой же ситуацией.
Еще одно возможное решение, которое, на мой взгляд, подходит, если элементы управления, которые вы собираетесь создать, не особенно сложны, - это создание базового элемента управления пользователя, содержащего общие функции, которыми вы хотите поделиться: такой элемент управления будет записан полностью в C #.
Фактически это позволяет наследовать пользовательские элементы управления, состоящие как из XAML, так и из кода. В XAML унаследованного элемента управления вместо
<UserControl> ... </UserControl>
У вас будет
<MyProject: MyBaseControl x:Class="MyProject.MyExtendedControl"> ... </MyProject: MyBaseControl>
, а затем в указанном коде вам также необходимо указать следующее:
class MyExtendedControl : MyBaseControl
Надеюсь, это поможет.