Hi Ajeje,
try following demo with 2 UserControls and 3 ViewModels; ViewModel0 - main ViewModel, ViewModel1 - for UserControl1, ViewModel2 - for UserControl2.
XAML Main Window:
<UserControl x:Class="Window096UC2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WpfControlLibrary1.WpfApp096"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<UserControl.Resources>
<local:ViewModel2 x:Key="vm2"/>
</UserControl.Resources>
<Border BorderBrush="Green" BorderThickness="2">
<StackPanel>
<Label Content="UserControl 2"/>
<TextBox Text="{Binding Text0, UpdateSourceTrigger=PropertyChanged}"
Margin="5"/>
<TextBox Text="{Binding Text2, Source={StaticResource vm2}, UpdateSourceTrigger=PropertyChanged}"
Margin="5"/>
<TextBox Text="{Binding Text2, Source={StaticResource vm2}, UpdateSourceTrigger=PropertyChanged}"
Margin="5"/>
</StackPanel>
</Border>
</UserControl>
XAML UserControl1:
<UserControl x:Class="Window096UC1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WpfControlLibrary1.WpfApp096"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<UserControl.Resources>
<local:ViewModel1 x:Key="vm1"/>
</UserControl.Resources>
<Border BorderBrush="Red" BorderThickness="2">
<StackPanel>
<Label Content="UserControl 1"/>
<TextBox Text="{Binding Text0, UpdateSourceTrigger=PropertyChanged}"
Margin="5"/>
<TextBox Text="{Binding Text1, Source={StaticResource vm1}, UpdateSourceTrigger=PropertyChanged}"
Margin="5"/>
<TextBox Text="{Binding Text1, Source={StaticResource vm1}, UpdateSourceTrigger=PropertyChanged}"
Margin="5"/>
</StackPanel>
</Border>
</UserControl>
XAML UserControl2:
<UserControl x:Class="Window096UC2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WpfControlLibrary1.WpfApp096"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<UserControl.Resources>
<local:ViewModel2 x:Key="vm2"/>
</UserControl.Resources>
<Border BorderBrush="Green" BorderThickness="2">
<StackPanel>
<Label Content="UserControl 2"/>
<TextBox Text="{Binding Text0, UpdateSourceTrigger=PropertyChanged}"
Margin="5"/>
<TextBox Text="{Binding Text2, Source={StaticResource vm2}, UpdateSourceTrigger=PropertyChanged}"
Margin="5"/>
<TextBox Text="{Binding Text2, Source={StaticResource vm2}, UpdateSourceTrigger=PropertyChanged}"
Margin="5"/>
</StackPanel>
</Border>
</UserControl>
ViewModels:
Imports System.ComponentModel
Imports System.Runtime.CompilerServices
Namespace WpfApp096
Public Class ViewModel0
Inherits ViewModelBase
Private _text0 As String
Public Property Text0 As String
Get
Return Me._text0
End Get
Set(value As String)
Me._text0 = value
OnPropertyChanged()
End Set
End Property
End Class
Public Class ViewModel1
Inherits ViewModelBase
Private _text1 As String
Public Property Text1 As String
Get
Return Me._text1
End Get
Set(value As String)
Me._text1 = value
OnPropertyChanged()
End Set
End Property
End Class
Public Class ViewModel2
Inherits ViewModelBase
Private _text2 As String
Public Property Text2 As String
Get
Return Me._text2
End Get
Set(value As String)
Me._text2 = value
OnPropertyChanged()
End Set
End Property
End Class
Public Class ViewModelBase
Implements INotifyPropertyChanged
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
Protected Sub OnPropertyChanged(<CallerMemberName> Optional propName As String = "")
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName))
End Sub
End Class
End Namespace
Result: