XamlReader вам в помощь, у него есть метод Parse, из XAML в строке возвращает объект. Привязку событий к элементам в вашем Xaml нельзя использовать, придется в ручную обходить дерево и привязывать события.
В своем проекте я делал разделение прав на основе поведений (Behaviors), сделал наследников от стандартного Behaviors(которые устанавливают свойства Visibilyty, Enabled), и в зависимости от роли пользователя, в XAML выглядит так
<CheckBox IsChecked="{Binding Paid, Mode=TwoWay}">
<i:Interaction.Behaviors>
<sb:EnabledBehavior IsEnabled="True" AuthService="{Binding Auth, Mode=OneWay, Source={StaticResource asp}}" UserRoles="EditEcoData,SetPaid" />
</i:Interaction.Behaviors>
</CheckBox>
AuthService, класс в котором есть методы для определения прав.
Те, если у пользователя есть роли необходимые, то checkbox будет активным, иначе нет.
можно сделать, такое и на Visibilyty.