Ум, почему бы вам не просто использовать его дважды? Если вы привязаетесь к виртуальной машине (как к DataContext) с теми же свойствами, она «просто работает», не иначе, как привязка двух текстовых блоков (или другого «обычного» элемента управления) к тому же свойству в виртуальной машине.
Здесь я использую тот же элемент управления в том же окне, но его можно так же легко использовать в том же UserControl, DataTemplate и т. Д. - все, что вы определяете как «представление».
XAML
<Window x:Class="MyNamespace.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MyNamespace"
Title="My Window" Width="300" Height="300">
<StackPanel>
<local:MyUserControl x:Name="control1"
SomeProperty="{Binding MyMVVMProperty}" />
<local:MyUserControl x:Name="control2"
SomeProperty="{Binding MyMVVMProperty}" />
<TextBlock x:Name="txt1"
Text="{Binding AnotherMVVMProperty}" />
<TextBlock x:Name="txt2"
Text="{Binding AnotherMVVMProperty}" />
<TextBlock x:Name="txt3"
Text="{Binding AThirdMVVMProperty}" />
</StackPanel>
</Window>
Код За
class Window1 : Window
{
MyViewModel mViewModel = new MyViewModel();
public Window1()
{
this.DataContext = mViewModel;
}
}
Но ..следующие вопрос ... Давайте думать, мой пользовательский элемент управления представляет собой сетку. когда я выбираю элемент в одном пользовательском элементе управления ... тот же элемент будет выбран в другом. – Relativity
Точно. Вот что такое MVVM. Если вы используете один и тот же элемент управления с теми же свойствами, то одно и то же должно произойти в обоих случаях. Если вы используете один и тот же элемент управления, но меняете другое свойство, должно произойти что-то другое. Я обновил свой ответ выше - я добавил третий TextBlock. txt1 и txt2 привязываются к одному и тому же свойству, поэтому, если переменная AnotherMVVMP изменяется, оба должны отражать это. Тем не менее, txt3 (который также является экземпляром элемента управления TextBlock) связывается с совершенно другим значением и на него не повлияет изменение свойства AnotherMVVMProty. –
Еще один способ взглянуть на это - вы могли бы поместить два списка в View и привязать его к ViewModel. Если оба они привязаны к одному и тому же свойству коллекции в вашей виртуальной машине, они будут одинаковыми; если они свяжутся с разными свойствами, они будут разными. Пользователь UserControl ничем не отличается от любого другого элемента управления, если он использует привязки, а не жестко закодированные значения. –