Vinculación de datos de modelos de objetos complejos con WPF

Actualmente estoy trabajando en la refactorización de un código antiguo que se escribió encima de WPF con C #.

Actualmente tengo un modelo de usuario compuesto que se ve así:

public class UserModel{
   public User User {get; set;}
   public List<Guid> Permissions {get; set;}
}

En este modelo, la lista de Permisos es una lista de los ID de permisos otorgados al Usuario referenciado por el modelo.

En mi xaml para mi pantalla de administración de usuarios, tengo una lista de estos modelos vinculados a un cuadro combinado y, cuando la selección cambia, el elemento seleccionado está vinculado a una cuadrícula que contiene cuadros de texto para la propiedad del usuario y un control de elementos.

Este control de elementos se llena con casillas de verificación vinculadas a todos los permisos en los sistemas cuando se carga la página. Mi pregunta es ¿cuál es la mejor manera de vincular la lista de Permisos a las casillas de verificación en el control de elementos?

El código para el control de elementos se ve algo como esto:

<ScrollViewer Grid.Row="7" Grid.Column="1">
  <ItemsControl ItemsSource={Binding}>
    <ItemsControl.ItemsTemplate>
        <DataTemplate>
            <Checkbox Content="{Binding Description}" IsChecked="{Binding IsSelected}"/>
        </DataTemplate>
    </ItemsControl.ItemsTemplate>
</ScrollViewer>

Y la colección de permisos es una lista de este objeto:

class SelectedPermission{
   public Guid PermissionId {get; set;}
   public string Description {get; set;}
   public bool IsSelected {get; set;}
 }

Mi idea inicial fue implementar INotifyPropertyChanged en la colección SelectedPermission y cuando vinculo a mi usuario, simplemente establezca IsSelected en true para cualquier permiso que se otorgue al usuario seleccionado. Pero parece que debería haber una mejor manera.

Respuestas a la pregunta(1)

Su respuesta a la pregunta