Являются ли два разных источника данных разными типами? Или это два разных экземпляра одного типа?
Я спрашиваю, потому что решение, которое вы запрашиваете - создание привязки во время выполнения - может быть излишне сложным. Обычно вам не нужно создавать привязки во время выполнения, чтобы решить описанную проблему. Судя по тому, что вы уже сказали о проблеме, похоже, что гораздо более простое решение должно сработать.
Чрезвычайно распространено иметь несколько экземпляров определенного пользовательского элемента управления, и каждый экземпляр должен быть связан с различным исходным объектом. Вы можете сделать это с помощью обычных выражений привязки данных в Xaml. Хитрость заключается в том, чтобы полагаться на DataContext , чтобы определить, какой именно пользовательский элемент управления использует в качестве источника. Например:
<my:MyUserControl DataContext="{Binding Path=Source1}" />
<my:MyUserControl DataContext="{Binding Path=Source2}" />
Это создаст два экземпляра пользовательского элемента управления, MyUserControl, и любые привязки в первом будут привязаны к любому объекту в Source1, а во втором будет использоваться Source2. Так что, если MyUserControl.xaml содержит что-то вроде этого:
<TextBlock Text="{Binding Path=Name}" />
тогда это будет привязано к свойству Name двух разных исходных объектов в двух разных экземплярах пользовательского элемента управления.
Это соответствует вашему заявленному требованию о том, что каждый пользовательский элемент управления «должен быть привязан к другому источнику данных».